Перейти к содержанию

Спецификаторы преобразования в С?


Рекомендуемые сообщения

Народ - обьясните(сам не могу догаться) - что происходит, когда

в проге ввожу вместо цифры букву a например:

#include

main() {

int num;

char name[10];

FILE *fPtr;

if ((fPtr = fopen("my_test.data", "w")) == NULL) { printf("can't open it!"); }

else { printf("Enter a number and a name.\n");

printf("> ");

scanf("%d%s", &num, name);

while (!feof(stdin))

{ fprintf(fPtr, "%d %s\n", num, name);

printf("> ");

scanf("%d%s", &num, name); }

fclose(fPtr);

}

return 0;

и нажимаю энтер - а происходит след - в файл бесконечно начинает выводиться какая-то фигня(на месте mun - цифры, на месте name буквы из всей кодировочной таблицы) - чую что данные начинают считыватся(следуя спецификатору s но не находят признака конца стороки - так? Ну и как конкретно все работает непонятно...

Ссылка на комментарий
Поделиться на другие сайты

Нет-нет fopen и fclose обе вне цикла... забыл вписать последнюю скобку после return 0;

Вот упрощенный вариант -

#include

main() {

int num;

FILE *fPtr;

if ((fPtr = fopen("my_test.data", "w")) == NULL) { printf("can't open it!"); }

else { printf("Enter a number and a name.\n");

do {

printf("> ");

scanf("%d", &num);

if (feof(stdin)) { break ;};

fprintf(fPtr, "%d\n", num);}

while (!feof(stdin));

fclose(fPtr);

}

return 0;

}

Но та же история - если ввожу при запрсе не цифру(а букву) - то опять бесконецный ввод в файл какой-то ерунды - причем прога не реагирует на контрол-С.

Интересно что происходит в этом случае? - ну и как пишутся реальные программы - т.е. должна быть защита от некорректного ввода...

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...