Вызов функции на главную - PullRequest
1 голос
/ 28 апреля 2019

Цель состоит в том, чтобы отобразить слово в "file.txt", которое находится между "} {". Он запускается, когда я пишу его в main (), но когда я создаю новую функцию и вызываю ее в main, он запускает код, но только для того, чтобы ничего не отображать после слов.

void listagem() {

    FILE *fp;
    char s[20],*l;

    fp = fopen("file.txt","r+");

    while((*l = fgetc(fp)) != EOF)
        {
            if (strcmp(l,"}") == 0)
            {
                fscanf(fp,"%[^{]", s);
                printf("%s", s);
                break;
            }
        }

    fclose(fp);
}

int main() {

    listagem();
}

В файле есть "Мы находимся в {2019." написано, поэтому после его запуска должно отображаться «in», но это происходит только тогда, когда я запускаю код непосредственно в «main ()». При попытке запустить его в «listagem ()», а затем вызвать его в «main ()», после запуска программы ничего не отображается.

1 Ответ

0 голосов
/ 28 апреля 2019

Вы объявили l как указатель char, но никогда не выделяете для него память.

char *l = malloc(sizeof(*l));
if(l == NULL){
   printf("Could not allocate memory for character buffer.\n");
   return;
}

Убедитесь, что вы free(l); также в конце своей функции,

Редактировать:
Возможно, вы также хотите добавить новую строку (\n) к вашему printf().

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