Я немного новичок в C, но в основном у меня есть проблема, когда мне нужно прочитать '-1' из файла. К сожалению, это означает, что я столкнулся с преждевременным окончанием файла, потому что константа EOF также равна -1 в моем компиляторе.C - Использование fscanf для чтения '-1' из файла
Какая работа вокруг была бы для этого? Есть ли еще одна функция, которую я могу использовать для ее чтения, которая изменит EOF на то, с чем я могу работать?
Заранее спасибо.
код, так как люди просят за это
int read() {
int returnVal; // The value which we return
// Open the file if it isn't already opened
if (file == NULL) {
file = fopen(filename, "r");
}
// Read the number from the file
fscanf(file, "%i", &returnVal);
// Return this number
return returnVal;
}
Это число затем позже по сравнению с EOF.
Хорошо это, вероятно, плохая практика, но я изменил код к следующему
int readValue() {
int returnVal; // The value which we return
// Open the file if it isn't already opened
if (file == NULL) {
file = fopen(filename, "r");
}
// Read the number from the file
fscanf(file, "%i", &returnVal);
if (feof(file)) {
fclose(file);
return -1000;
}
// Return this number
return returnVal;
}
Потому что я знал, что я никогда не читал такого числа из моего файла (они варьируются от примерно [-300, 300] . Спасибо за вашу помощь, ребята!
Не имеет значения, что константа EOF равна -1 ... никогда не должно быть случая, когда вы изучаете прочитанное вами значение и возвращаете его как -1 по какой-либо причине, кроме -1 (или ничего) был прочитан, и ваша память уже содержала -1). Отправьте код, с которым, по вашему мнению, возникли проблемы, и вам может помочь, но без этого этот вопрос является неполным стандартами стека переполнения. – mah