ПОЖАЛУЙСТА, СМОТРЕТЬ В РЕДАКТИРОВАНИИ В КОНЕЦ ДАННОГО ТЕКСТА У меня есть test.dat, который имеет 2 строки. В первой строке находится число с плавающей точкой (5.0) Во второй строке представлены два целых числа, разделенных символом «*», например, 4 * 3 Номер плавающего номера отображается правильно (выход: 5,0000), но второй строка не отображается. Мой учитель сказал, что я совершил ошибку после цикла while. Fscanf читает END файла, а не начало. Вот почему я получаю случайные числа в виде вывода, например «65746 * -8634364». Я не знаю, как его решить. Ваша помощь будет приятной. Вот мой C код:Программа C читает конец файла
#include <stdio.h>
#include <stdlib.h>
int main()
{
float z1;
int z2,z3;
char line[255];
FILE *file;
file = fopen("test.dat", "r");
if (file==NULL)
{
printf("Error\n");
return 1;
}
fscanf(file, "%f", &z1);
printf("%f\n", z1);
while (fscanf(file, "%s", line) == 1)
{
fscanf(file, "%d*%d", &z2, &z3);
printf("%d * %d\n", z2,z3);
}
fclose(file);
return 0;
}
EDIT: Я получил новое предупреждение после того, как я следовал указаниям первого ответа Предупреждение Код: In function ‘main’: main.c:21:2: warning: format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘char (*)[255]’ [-Wformat=] while (fscanf(file, "%s", &line) ==1) ^
EDIT 2: предупреждение исчезает, благодаря первый ответ !! Еще проблема: содержимое второй строки - «4 * 3», мой вывод «0 * 0». Почему?
Пожалуйста, добавьте содержимое файла _test.dat_ на свой вопрос. –
Тест. dat - это только текстовый файл, который выглядит следующим образом: 1-я строка: 5.0 2-я строка: 4 * 3 Вот и все. – Blnpwr
(Пожалуйста, не слишком сильно меняйте свой вопрос, так как это может привести к аннулированию существующих ответов. Также нет необходимости добавлять «Разрешенный» в любом месте вашего вопроса. Наличие принятого ответа является достаточным показателем этого.) – usr2564301