Чтение из файла; не может создать процесс - PullRequest
1 голос
/ 12 августа 2011

Вот мой код:

#include<stdio.h>

void main()
{
    FILE *fp;
    fp=fopen("text.txt","r");
    if(fp==NULL)
        printf("ahaha");

    struct karan{
        int index;
        int number;
        char string[10];
    };

    struct karan first;

    fscanf(fp,"%d %d %s",first.index,first.number,first.string);
    printf("%d %d %s",first.index,first.number,first.string);
}  

Если мой текстовый файл содержит

1 123 каран
2 1234 хаха

Когда я компилирую код, он говорит
Возможно использование first перед определением.

и при запуске кода написано
Невозможно создать процесс!
Что я делаю не так?

1 Ответ

5 голосов
/ 12 августа 2011

Вам необходимо использовать оператор & с fscanf.

fscanf(fp,"%d %d %s",first.index,first.number,first.string); /* Wrong. */
fscanf(fp,"%d %d %9s", &first.index, &first.number, first.string); /* Right. */
                  ^

В противном случае вы будете рассматривать нежелательную информацию в first как адреса и будете вести себя неопределенным образом.Кроме того, обратите внимание на формат first.string.

. Существует C FAQ

Почему не вызывается scanf ("% d",i) работа?

Аргументы, которые вы передаете scanf , всегда должны быть указателями : для каждого преобразованного значения scanf "возвращает" его, заполняя одно из переданных вами местуказатели на.

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