2015-06-09 2 views
-1

В командной строке отображаются номера перед началом программы. Зачем? 2687688 дано , но цифры не будут записываться в файл?Почему команда подсказывает номера показов до начала?

#include <stdio.h> 
#include <conio.h> 

int main(void){ 
    FILE*nfPtr; 
    int n; 
    if ((nfPtr=fopen("c:\\Users\\raphaeljones\\Desktop\\newfile.dat","w"))==NULL) 
{ 
    printf ("Sorry! The file cannot be opened\n"); 
} 
    else 
{//else 1 begin 

    printf("Enter numbers to be stored in file\n"); 
    printf("%d",&n); 
    while (!feof(stdin)){ 
      fprintf(nfPtr,"%d",n); 
      scanf("%d",&n); 
      } 
}//else 1 ends 
     fclose(nfPtr); 

getch(); 
return 0; 
} 
+1

Потому что у вас есть 'printf ("% d ", &n);' - не предупреждает ли ваш компилятор предупреждения? –

+0

Также переместите 'fclose (nfPtr)' в тело блока 'else'. Поскольку' fclose (NULL) 'UB. –

ответ

1

Заменитель

printf("%d",&n); 

с

scanf("%d",&n); 

printf Записывает строку C, на который указывает формат для стандартного вывода (STDOUT)

scanf Читает данные из стандартного ввода

В своем коде вы печатаете п, который не инициализирован, что случайное число печатается после "Enter numbers to be stored in file" строки.

+0

Это работает. Довольно простая ошибка. Спасибо. –

2

Помимо других вопросов, в вашем коде

printf("%d",&n); 

абсолютно неправильно и вызывает undefined behaviour. . Возможно, вы имели в виду

scanf("%d",&n); 

для сканирования в число.

Тем не менее, смотрите, why you should refrain from using !feof(file)

Смежные вопросы