[英]C - print reversed file contents to stdout
我想读取文件的内容并打印其内容的反面。 仅使用 fopen、fgets、fputs、fclose。 这就是我所做的,但是没有打印任何内容。
#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;
}
output:
(nothing)
例子:
abcdef
ghi
预期 output:
fedcba
ihg
您从错误的偏移量开始
for (int i = length; i > 0; i--) // reverse buffer
切换到
for (int i = length - 1; i >= 0; i--) // reverse buffer
否则,您交换/反转 NUL 终止符并获得一个空字符串
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.