C - print reversed file contents to stdout
我想读取文件的内容并打印其内容的反面。 仅使用fopen,fgets,fputs,fclose。 这是我所做的,但是没有打印任何内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <sys/types.h> #include <sys/stat.h> #include <sys/fcntl.h> #include <unistd.h> #include <stdio.h> int main(int argc, char *argv[]) { if (argc != 2) { return 1; } FILE *f = fopen(argv[1],"r"); if (f == NULL) { return 2; } char buffer[4096]; char reversed[4096]; char *line = fgets(buffer, 50, f); //read 50 characters at a time int length = 0; int j = 0; while (line != NULL) // while end of file not reached { length = 0; j = 0; for (char *temp = buffer; *temp != '\\0'; temp++) //find length of buffer { length += 1; } for (int i = length; i > 0; i--) // reverse buffer { reversed[j] = buffer[i]; j += 1; } fputs(reversed, stdout); line = fgets(buffer, 50, f); } fclose(f); return 0; } |
输出:
1 | (nothing) |
例:
1 2 | abcdef ghi |
预期输出:
1 2 | fedcba ihg |
您从错误的偏移量开始
1 | for (int i = length; i > 0; i--) // reverse buffer |
切换到
1 | for (int i = length - 1; i >= 0; i--) // reverse buffer |
否则,您将交换/反向NUL终止符并获得一个空字符串