fgets while 循环问题
Issue with fgets while loop
目前我有这样的事情:
while(fgets(i, sizeof(i), stdin)!=NULL) {
printf("%s", i);
printf("line%d - j", j);
j++
产生类似的东西:
line1
line1 - j
line2
line2 - j
line3line3 - j
我遇到的问题是我抓取的最后一行没有产生新行,第二个打印语句继续在同一行上打印。
有人知道如何解决这个问题以便它产生:
line1
line1 - j
line2
line2 - j
line3
line3 - j
你应该在你用 printf 写的每个字符串的末尾加上一些 '\n'。
while(fgets(i, sizeof(i), stdin)!=NULL) {
printf("%s\n", i);
printf("line%d - j\n", j);
j++;
这应该可以解决您的问题。
再见!
通过添加检查字符串末尾是否有新行来修复:
if (strchr (line, '\n') != NULL) {
printf("%s", line);
}
else {
printf("%s\n", line);
}
还有李斯特先生建议的更短的版本:
printf(strchr(line, '\n') ?"%s" :"%s\n", line);
由于各种原因,fgets()
的结果可能包括也可能不包括结尾 '\n'
。
有的话建议去掉。
while(fgets(i, sizeof(i), stdin)!=NULL) {
// delete potential \n - this works if \n exists or not
i[strcspn(i,"\n")] = 0;
printf("%s\n", i); // add \n
printf("line%d - j\n", j); // add \n
j++
}
目前我有这样的事情:
while(fgets(i, sizeof(i), stdin)!=NULL) {
printf("%s", i);
printf("line%d - j", j);
j++
产生类似的东西:
line1
line1 - j
line2
line2 - j
line3line3 - j
我遇到的问题是我抓取的最后一行没有产生新行,第二个打印语句继续在同一行上打印。
有人知道如何解决这个问题以便它产生:
line1
line1 - j
line2
line2 - j
line3
line3 - j
你应该在你用 printf 写的每个字符串的末尾加上一些 '\n'。
while(fgets(i, sizeof(i), stdin)!=NULL) {
printf("%s\n", i);
printf("line%d - j\n", j);
j++;
这应该可以解决您的问题。 再见!
通过添加检查字符串末尾是否有新行来修复:
if (strchr (line, '\n') != NULL) {
printf("%s", line);
}
else {
printf("%s\n", line);
}
还有李斯特先生建议的更短的版本:
printf(strchr(line, '\n') ?"%s" :"%s\n", line);
由于各种原因,fgets()
的结果可能包括也可能不包括结尾 '\n'
。
有的话建议去掉。
while(fgets(i, sizeof(i), stdin)!=NULL) {
// delete potential \n - this works if \n exists or not
i[strcspn(i,"\n")] = 0;
printf("%s\n", i); // add \n
printf("line%d - j\n", j); // add \n
j++
}