Я работаю над своим школьным заданием и столкнулся с моим первым серьезным препятствием ... Я не могу записать в файл или даже получить данные, используя scanf и fgets.
Задача 1:
FILE *f1;
char date_trans[100][15];
f1 = fopen("test.txt", "w");
if (f1 == NULL)
printf("File could not be opened.\n");
else
printf("Enter details (sender, receiver, amount.)\n");
for(i = 0; i <= element; i++)
{
for(j = 0; j <= 20; j++)
fgets(date_trans[i][j], 15, stdin);
printf("%s", date_trans[i][j]);
}
fclose(f1);
Это небольшой фрагмент кода;с вышеуказанным кодом я не могу получить введенный ввод и распечатать его на дисплее / в файл.
Мое намерение состоит в том, чтобы иметь 100 строк и до 15 символов в каждой.
Так скажи, если бы я должен был ввести дату, например 18/12/15 или 18-12-15, илиПри таком слове, как «Даниэль», программа резко останавливается на несколько секунд после того, как я нажимаю «Ввод», и затем отображается «Нажмите любую клавишу ...».
Я также получаю эту ошибку ...
[Warning] ...\assignment\test.c:22: warning: passing arg 1 of `fgets' makes pointer from integer without a cast
, который я действительно не понимаю, так как переменная date_trans является строкой / двумерным массивом символов, а не целым числом, верно?
Редактировать:
Проблема 2:
for (j=0; j <= 50 || !feof(f1); j++); // f1 opened in 'r' mode.
{
fscanf(f1, "%s %d %s %d %s %f", date_trans[j], &accsend[j], accnames[j],
&accreceive[j], accnamer[j], &amount_trans[j]);
printf("%d %s %d %s %d %s %.2f\n", j+1, date_trans[j], accsend[j], accnames[j],
accreceive[j], accnamer[j], amount_trans[j]);
}
В приведенном выше коде я пытаюсь ввести данные через поток f1 с помощью функции fscanf, которая была открыта в режиме чтения.Однако вывод приводит к зависанию программы, и я также не могу набрать или выполнить какие-либо действия внутри программы.
Также, пожалуйста, сообщите, правильно ли я использую! Feof.
Спасибо за любую помощь.