как я могу найти начальные буквы всех слов в файле .txt - PullRequest
0 голосов
/ 21 января 2019

Я немного зелен в C и в целом программировании, поэтому мне нужна помощь в выполнении задачи.

Я пытаюсь найти ответ на этот вопрос, и все, что я придумал, это этот код, который работает, но выход:

vhiag
hwag
tiatg

требуемый вывод:

vhiag
hw
tiat
size=sizeof(ss)/sizeof(ss[0]);
        if(strcmp(op,"first")==0){

            while(1){
            if(fgets(ss,512,fp)==NULL){
                break;
                }
                first(ss,size);
            } 

        } 
void first(char spaces[],int size)
{
        int i=1;
        char r[size];
        r[0]=spaces[0];
        int j;
        for(j=0;j<size;j++)
        {

            if(spaces[j]==' ')
            {
                r[i]=spaces[j+1];
                        i++;
            }
        }
        r[i]='\0';
       printf("%s\n",&r); 
        return; 
}

1 Ответ

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

Ваша first() функция сканирует весь представленный ей массив, все size байта, независимо от присутствия ограничителя строки внутри. Поэтому, если входная строка короче предыдущей, ваша функция беспечно сканирует наложение второй строки на первую.

Чтобы остановить сканирование в конце строки, оторвитесь от петли, когда увидите терминатор:

    for (j = 0; spaces[j] != '\0'; j++)

Вы также можете нарушить условие, при котором j достигает или превышает size (как дополнительное , а не альтернативное условие), но это не является действительно необходимым в вашем случае, поскольку вы можете положиться на fgets() для предоставления этого терминатора в пределах количества байтов, указанных ему.

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