我正在尝试从另一个文件读取和打印,并分别反转每一行,但是我只能打印出这些行并反转最后一行。我需要做什么来反转文件中的每一行的任何建议?
*我不能使用strrev(),必须保持相同的格式但要反转(即大写,数字和符号相同)
int main() {
int i=0, j, len;
char data[80]. rev[];
FILE *fp = fopen("fileread", "r");
// reads and prints out fileread
while(!feof(fp))){
fgets(data, 80, fp);
puts(data);
}
// reverse hopefully
while(data[++i] != '\0;);
while(i>=0);
rev[j++] = data[--j];
rev[j] = '\0';
printf("String Reversed: %s\n, rev);
fclose(fp0);
}
这是我想要的一个例子。
(文件文字)
Hello World!
I am $till around.
running @ Best Speedz
kayak
预期输出:
!dlroW olleH
.dnuora llit$ ma I
zdeepS tseB @ gninnur
kayak
最佳答案
打印反转行的代码在while循环之外。因此,它将仅打印最后一行。
在while循环中,测试fgets(...)!=NULL
。
如果有换行符,请不要忘记删除该行的末尾,否则在反转字符串时会感到惊讶。
最后,出于可读性考虑,创建一个单独的函数来对字符串执行就地反转。
关于c - 尝试反转具有多个字符串的文件,但仅反转最后一个字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43054228/