В моей программе C fgets
не читает никаких данных. Пожалуйста, смотрите ниже код:Странное поведение кода C (функция fgets)
#include <stdio.h>
int main()
{
char string[50];
int marks,i,n, limit;
printf("Enter Limit : \n");
scanf("%d", &limit);
FILE *fptr; fptr=(fopen("string.txt","w"));
if(fptr==NULL){
printf("Error!");
return 0;
}
printf("Enter a string : \n");
fgets(string, sizeof(string), stdin);
fwrite(string, 1, sizeof(string), fptr);
fclose(fptr);
return 0;
}
После того как я ввод предела, программа показывает «Введите строку» и просто завершает работу (до ввода каких-либо данных). Если я удалю оператор scanf("%d", &limit);
, он отлично работает. Также, если добавить getchar();
заявление выше fgets
, он будет работать нормально. Кто-нибудь знает причину этой проблемы?
Я изменил код следующим образом. scanf ("% d", & limit); Но теперь вывод выглядит следующим образом: 1. Введите предел 2. 3 (Комментарий: введенный предел и нажмите Enter ket) 3. sswew (Комментарий: мне пришлось снова ввести что-то здесь и снова нажать Enter) 4. Введите строку (Комментарий : Прежде чем вводить какие-либо программные выходы) – Vaquita
Я не знаю, почему это не работает для меня. Когда вы даете дополнительное пространство после '% d', я должен нажать дополнительный символ, и это заставляет программу заканчиваться. – haccks
Joachim Не могли бы вы проверить это? Я использую Mac OS X 10.8 и CC Compiler. Выше решение не работает для меня. – Vaquita