Страница 1 из 1
застряла в цикле while. нужно с файла считать число, которое стоит перед английской С
Добавлено: 19 май 2017, 21:56
bstrd6
Код: Выделить всё
int main()
{
FILE *fp;
float farengheit;
int i = 0, C = 0, g, a = 0, size = 100, newNum;
char curstr[100] = "";
char *filename = "C:\\Users\\User\\Desktop\\lab.txt";
if (!fopen_s(&fp, filename, "r"))
while (fscanf_s(fp, "%c", curstr[size]) != EOF)
{
for (i = 0; i < size; i++)
{
g = i;
newNum = 0;
a=0;
if (curstr[i] = 'C')
{
while ((curstr[g] != ' ') && curstr[g] != '\n' && (g >= 0))
{
if (((int)curstr[i] < (int)'0') && ((int)curstr[i] > (int)'9'))
a++;
}
if (a == 0)
{
for (g; g<i; g++)
newNum = (((int)curstr[g] - 48) * pow(10, g - 1));
a++;
}
printf("%d", newNum);
}
}
getchar();
return 0;
}
else
{
printf_s("can`t open this");
}
}
Re: застряла в цикле while. нужно с файла считать число, которое стоит перед английск
Добавлено: 19 май 2017, 23:19
Romeo
Во-первых, обращение к curstr[size] некорректно, так как у массива элементы имеют индексы от 0 до size-1.
Во-вторых, функция fscanf должна принимать адрес памяти, в которую она будет записывать результат, ты же ей передаёшь значение.
Re: застряла в цикле while. нужно с файла считать число, которое стоит перед английск
Добавлено: 20 май 2017, 08:34
bstrd6
Romeo писал(а):Во-первых, обращение к curstr[size] некорректно, так как у массива элементы имеют индексы от 0 до size-1.
Во-вторых, функция fscanf должна принимать адрес памяти, в которую она будет записывать результат, ты же ей передаёшь значение.
То есть мне нужно написать ..., curstr, size?
Re: застряла в цикле while. нужно с файла считать число, которое стоит перед английск
Добавлено: 20 май 2017, 11:16
Romeo
Нет, нужно начинать обход c size-1, а не с size.
По второму пункту вопросов не возникло?
Посмотрел оставшийся код... там вообще чёрт ногу сломит. Что вообще он должен был делать по задумке? В таком виде, в котором он сейчас записан он работать не будет. Недостаточно поправить отдельные места, код нужно просто полностью переписать.
Re: застряла в цикле while. нужно с файла считать число, которое стоит перед английск
Добавлено: 20 май 2017, 16:12
bstrd6
Romeo писал(а):Нет, нужно начинать обход c size-1, а не с size.
По второму пункту вопросов не возникло?
Посмотрел оставшийся код... там вообще чёрт ногу сломит. Что вообще он должен был делать по задумке? В таком виде, в котором он сейчас записан он работать не будет. Недостаточно поправить отдельные места, код нужно просто полностью переписать.
Перевести все мерные температуры из цельсия в фаренгейт. Пример: 210C = 410F
Re: застряла в цикле while. нужно с файла считать число, которое стоит перед английск
Добавлено: 20 май 2017, 18:53
Romeo
В общем, на твоём месте я бы это полностью переписал, так как в программе огромное количество ошибок.
Если же ответа требует вопрос, почему ты не выходишь из внешнего while, то ответ прост. Функция fscanf возвращает количество прочтённых байт. А так как оно будет всегда либо 1, либо 0, то условие никогда не выполнится, так как EOF обычно равен -1.