Как я могу сделать программу на C, которая использует первые символы слов в файле? - PullRequest
0 голосов
/ 24 мая 2018
    #include <stdio.h>

    int main()
    {
        FILE *fp;
        int i;
        int pos;

        fp=fopen("test.txt","r+");
        fseek(fp,0,SEEK_END);
        pos=ftell(fp);

        char ch[pos-1];
        fseek(fp,0,SEEK_SET);


        ch[0]=ch[0]-32;

        i=0;
        while(ch[i]=fgetc(fp)!=EOF){


            if(ch[i]!=' '){
                fseek(fp,1,SEEK_CUR);
                i++;
            }
            else{
                fseek(fp,1,SEEK_CUR);
                i++;
                ch[i]=fgetc(fp);
                ch[i]=ch[i]-32;
                fprintf(fp,"%c",ch[i]);
            }       
        }
        fclose(fp);








    }

Я хочу сделать программу на С, которая использует первые символы слов в файле.Но когда я запускаю этот код. TXT файл получить неправильно.Использование fgetc () неправильно?где моя вина на этот вопрос?И fscanf перемещает курсор?

1 Ответ

0 голосов
/ 24 мая 2018

В условии для вашего цикла while у вас есть

ch[i] = fgetc(fp) != EOF

Так как! = Имеет более высокий приоритет, чем =, это эквивалентно

ch[i] = (fgetc(fp) != EOF)

, которое не оцениваетсяна символ, а не 0 или ненулевое значение из сравнения.

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

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