【问题标题】:Trying to reverse a file wth multiple strings but only reversing last string尝试反转具有多个字符串但仅反转最后一个字符串的文件
【发布时间】:2017-03-27 18:50:04
【问题描述】:

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

【问题讨论】:

标签: c string io reverse


【解决方案1】:

打印反转行的代码在 while 循环之外。因此它只会打印最后一行。

在while循环中,测试fgets(...)!=NULL

如果有换行符,别忘了去掉行尾的换行符,否则当你反转字符串时,你会有一个惊喜。

最后,为了可读性,创建一个单独的函数来执行字符串的就地反转。

【讨论】:

  • 谢谢!我无法获得这部分代码,但将其更改为 NULL 语句确实有很大帮助!
猜你喜欢
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 2021-03-09
相关资源
最近更新 更多