首页 > 解决方案 > 我应该从 .txt 中读取文本并将其显示在控制台中,但我的代码不起作用,我的错误在哪里?

问题描述

首先,我被要求在控制台中输入文本并将其打印到 .txt 文件中。然后,在我在 .txt 文件中打印该文本之后,我应该在控制台中打印该文本,并在每行的末尾显示每行有多少个字符。

    ex:
    Annie is a 8
    big girl 7
    with big dreams 13 


  for  (int i=0;   i<4   ;i++)
{
    while ((c=fgetc(p))!=EOF||(c=fgetc(p))!='\n')
      {
          printf("%c",c);
          n++;
      }
      printf("%d",n);
}

这部分是有问题的。在我输入文本并在 .txt 文件中打印后,我尝试在控制台中逐个字符地打印出来,“n”变量应该是每个字母的计数器。我的错误在哪里?如果需要,我可以显示整个代码。

标签: c

解决方案


你没有忘记倒带(或 fseek)指令吗?如果您编写 .txt 文件并且在尝试不使用 rewind(或 fseek 或 close/fopen)指令读取它之后,文件位置在文件末尾。所以没有要读取的字符,因为您已经在文件末尾。尝试使用和不使用倒带指令的以下代码。

#include <stdio.h>
#include <stdlib.h>

int main() {
    char c = '\0';
    int n;

    FILE * p;
    p=fopen("myfile.txt","w+");
    fprintf(p,"Annie is a\nbig girl\nwith big dreams");

    rewind(p);

    while((c=fgetc(p))!=EOF) {
        if (c=='\n') {
            printf(" : %d\n",n);
            n=0; }
        else {
            printf("%c",c);
            if (!isspace(c)) n++;
        }
    }
    printf(" : %d\n",n);
}

推荐阅读