Es sieht aus wie scanf() liest die vorherige '\ n'. Ich versuche, meine verkettete Zeichenfolge in einer Zeile zu erhalten. Wie beseitige ich das '\ n' am Anfang meiner zweiten Saite?Stripping Newline ist sehr schwierig
Dies ist ein c-Programm.
Ich vermute, ich muss den Puffer irgendwie vor der nächsten Zeile gelesen werden. Aber ich weiß nicht, wie dies ohne einen Fehler zu tun.
Btw, ich kann hier nicht cin.get() oder andere Standard Cin/Cout Operationen verwenden. Ich kann auch keine Standard-String-Operationen verwenden, weil ich ausschließlich mit c-Strings und strings.h arbeite, nicht mit Strings.
Eingabe von stdin ist:
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;
Meine Ausgabe ist:
16 8.0 See tSpot run!
// < --Anmerkung das 't' vor Spot !!!
Sind Sie sicher, dass Sie C++ lernen? Das sieht wie ein C-Programm aus. –
Sie haben Recht, ich werde das richtige machen. Ich habe C++ von einem Haufen alter C-Programmierer gelernt, die immer noch C-Style-Gewohnheiten verwenden, also habe ich das nicht sofort verstanden. Ich werde das Tag korrigieren. – NonCreature0714
"* Es sieht aus wie scanf() liest die vorherige '\ n'. *" Hast du das überrascht? Wenn ja, was denkst du würde es lesen? –