in verschiedenen String Merge habe ich diesen Code:ein
int main(){
char buf[40];
char buff[40];
char bufff[40];
fgets(buf, 40, stdin);
fgets(buff, 40, stdin);
fgets(bufff, 40, stdin);
}
Eingang:
Hello
from
Earth
Hello from Earth
ich den Code auf eine währungspolitische Plattform senden:
Hello
from
Earth
ich diese Ausgabe haben muss , und es kam zu mir, dass mit dem folgenden Code bekomme ich falsch ausgegeben:
buf[strlen(buf)-1] = "";
buff[strlen(buff)-1] = "";
bufff[strlen(bufff)-1] = "";
printf("%s\n%s\n%s\n", buf, buff, bufff);
printf("%s %s %s", buf, buff, bufff);
@ user3121023 Das ist richtig, legt es als Antwort – user4789408
die 'fgets()' Funktion immer NUL die Zeichenfolge beendet, so dass keine Notwendigkeit, dass der Schritt separat durchzuführen. Und 'strlen()' wird nicht funktionieren, wenn die Zeichenfolge nicht bereits NULL beendet ist. Das 'fgets()' wird jedoch auch den abschließenden Zeilenumbruch enthalten, den Sie eliminieren wollen, vielleicht mit etwas wie: 'char * newline; if (strchar (buf, '\ n')) {* newline = '\ 0'; } 'Hinweis: gehen Sie nicht davon aus, dass es einen Zeilenumbruch gibt, überprüfen Sie immer zuerst. – user3629249
in den Zuweisungsanweisungen, wie diesem: 'buff [strlen (buff) -1] =" ";' Das '" "' wird in einen Zeiger auf eine Zeichenfolge aufgelöst. Das Zuordnen eines Zeigers zu einem String zu einem Zeichen funktioniert nicht. Verwenden Sie stattdessen diese Art von Zeile: 'buff [strlen (buff) -1] = '\ 0';' – user3629249