我正在尝试从另一个文件读取和打印,并分别反转每一行,但是我只能打印出这些行并反转最后一行。我需要做什么来反转文件中的每一行的任何建议?
*我不能使用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/

10-13 04:23