Я должен прочитать текст из .txt и отобразить его в консоли, но мой код не работает, где моя ошибка? - PullRequest
0 голосов
/ 05 января 2019

Во-первых, меня просят набрать текст в консоли и распечатать его в текстовом файле. Затем, после того, как я напечатал этот текст в файле .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» должна быть счетчиком каждой буквы. Где моя ошибка? Я могу показать весь код, если это необходимо.

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Разве вы не забыли инструкцию перемотки (или fseek)? Если вы пишете .txt файл и после попытки прочитать его без инструкции перемотки (или 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);
}
0 голосов
/ 05 января 2019

Пожалуйста, проясните свой вопрос. Что не работает, n отображает неправильное количество символов или в чем ваша проблема?

Этот небольшой пример кода должен работать, если только n отображает неправильное число:

char c = ''; //so in default it is empty

for  (int i=0;   i<4   ;i++)
{
      int n=0;
      while( (c=fgetc(p))!=EOF && c!='\n')
      {
          printf("%c",c);
          if(c!=' ')//so we only count the letters and not whitespaces
              n++;
      }
      printf("%d",n);
}

Это должно дать желаемый результат, когда ваша часть открытия файла работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...