scanf()は前の '\ n'を読み込んでいるようです。私は連結された文字列を1行で取得しようとしています。 2番目の文字列の先頭に '\ n'を取り除くにはどうしたらいいですか?改行の削除は非常に難しい
これはCプログラムです。
私は、次の行が読み込まれる前にバッファを何とかフラッシュしなければならないと推測していますが、エラーなしでこれを行う方法はわかりません。
Btw、ここではcin.get()や他の標準的なcin/cout操作は使用できません。私は標準の文字列演算を使用することはできません。なぜなら、私は文字列ではなく、c-stringとstrings.hで排他的に作業しているからです。標準入力から
入力は次のとおりです。
12 4.0 Spot run!
int main() {
int i = 4;
double d = 4.0;
char s[] = "See ";
int isum;
int MAX_SIZE = 256;
double dsum;
char s2[MAX_SIZE];
scanf("%i",&isum);
scanf("%lf",&dsum); // Hope to clear out the newline from reading
// in the double value. Or any other newline
// before the next scarf(), but haven't figured
// how.
scanf("%79c", s2);
isum += i;
printf("%d \n",isum);
dsum += d;
printf("%.1f \n",dsum);
char newchar[MAX_SIZE];
strcpy(newchar,s);
newchar[strcspn(newchar,"\n")]='\0';
s2[strcspn(s2,"\n")] = 't'; //To test where newline is in second string.
strcat(newchar,s2);
printf("%s",newchar);
return 0;
私の出力は、次のとおりです。スポットの前に 'T' --note
16 8.0 See tSpot run!
// <!
C++を勉強していますか?これはCプログラムのようです。 –
あなたが正しいです、私は正しいことを行います。私はまだCスタイルの習慣を使用している古いCプログラマーの束からC++を学んだので、すぐにそれを選んだわけではありません。私はタグを修正します。 – NonCreature0714
"* scanf()は以前の '\ n'を読み込んでいるようです。*"それは驚くべきことでしたか?もしそうなら、あなたはそれを何と読もうと思いましたか? –