我试图读取文件和反向它的每一行,并在其下显示到标准输出C:与fgets在开始
我的文件返回一个额外的空行是:
$ cat f1
this is line 1
this is line 2
this is line 3
我的代码是:
#include <stdio.h>
#include <string.h>
void reverse_string(char *s) {
int l = strlen(s);
int i;
char sr[l];
int j = 0;
for (i = l - 1; i >= 0; i--) {
sr[j] = s[i];
j++;
}
printf("%s", sr);
}
int main(int argc, char *argv[]) {
FILE *fp;
int i;
char filename[128];
char line[100];
for (i = 1; i < argc; i++) {
strcpy(filename, argv[i]);
}
fp = fopen(filename, "r");
while (fgets(line, 128, fp) != NULL) {
if (strlen(line) != 0) {
reverse_string(line);
}
}
printf("\n");
}
输出是:
$ ./mycode f1
(blank line here)
1 enil si siht
2 enil si siht
3 enil si siht
我很困惑,即使文件中没有空行,为什么我的while循环会输出额外的空白行。
输出中多余的空白行在哪里? – nicomp
您通过设计将换行符移至行首: –
'while(fgets(line,128,fp)!= NULL)'行只有100字节大小。 sizeof是你的朋友在这里 – wildplasser