Гость Опубликовано 15 июня, 2001 Жалоба Опубликовано 15 июня, 2001 Народ - обьясните(сам не могу догаться) - что происходит, когда в проге ввожу вместо цифры букву 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 но не находят признака конца стороки - так? Ну и как конкретно все работает непонятно... Цитата
Гость Опубликовано 18 июня, 2001 Жалоба Опубликовано 18 июня, 2001 во первых, попробуйте написать не просто "w" а "wt". во вторых почему fclose внутри цикла, а fopen вне цикла? Цитата
Гость Опубликовано 18 июня, 2001 Жалоба Опубликовано 18 июня, 2001 Нет-нет 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; } Но та же история - если ввожу при запрсе не цифру(а букву) - то опять бесконецный ввод в файл какой-то ерунды - причем прога не реагирует на контрол-С. Интересно что происходит в этом случае? - ну и как пишутся реальные программы - т.е. должна быть защита от некорректного ввода... Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.