2013-11-12 2 views
1

У меня есть школьный проект в Linux, и мне нужно создать пользовательский текстовый файл, который имеет 1000 случайных чисел между 100-999.C fprintf пишет несколько строк в файл?

Мне удалось создать пользовательский файл с помощью массива, а мой код не имеет ошибок, но когда я его запустил, у меня есть только один номер в моем файле, но я хочу иметь 1000 номеров, которые я использую \ n, но не работает, пожалуйста, помогите меня ?

#include<stdio.h> 
#define MAX 100 

int main() 
{ 
    FILE *fp; 
    char dosya[MAX]; 
    printf("\nLütfen dosya adı giriniz:"); 
    scanf("%s",dosya); 
    fp=fopen(dosya,"w"); 
    int i; 
    for (i=0;i<1000;i++); 
    { 

     int sayi; 

     sayi=rand()%999-100; 
     fprintf(fp,"\n"); 
     fprintf(fp,"%d\n",sayi); 
     fprintf(fp,"\n"); 
    } 
    fclose(fp); 
    return 0; 
} 

Когда я запускаю это в моем файле есть только один номер, так что я думаю, что он продолжает писать на ту же строку в 1000 раз (а есть/п), где остальное я проверил цикл и его работа, пожалуйста, помогите мне?

+1

почему вы закрываете файл в конце каждой итерации? – elyashiv

+0

Ваш пример разбит (отсутствует)), но похоже, что вы закрываете файл и выходите на первую итерацию цикла. –

+0

Я исправил, что закрываю файл после цикла for еще ничего ... –

ответ

9

Удалить точку с запятой после цикла.

Когда вы выполняете свой код, все равно 1000 итераций только один раз, когда выполняется ваш цикл after for.

for (i=0;i<1000;i++); 
        ^^ 
+1

Очень хорошая добыча! – Sebastien

+3

Одна из наиболее неприятных ошибок, с которыми вы можете столкнуться. –

+1

Большое вам спасибо –

3

В C, все команды заканчиваются точкой с запятой

Ваш «за» утверждение имеет точку с запятой в конце, который интерпретируется как «ничего не делать» инструкции.

for (i=0;i<1000;i++); 

Удалить конечную точку с запятой, и она будет работать.

1

Вы завершаете цикл for сразу после его создания. удалите точку с запятой в строке ниже.

для (i = 0; i < 1000; i ++);

Ваш окончательный код:

#include<stdio.h> 
#define MAX 100 

int main(){ 
FILE *fp; 
char dosya[MAX]; 
printf("\nLütfen dosya adı giriniz:"); 
scanf("%s",dosya); 
fp=fopen(dosya,"w"); 
int i; 
for (i=0;i<1000;i++){ 
    int sayi; 
    sayi=rand()%999; 
    fprintf(fp,"\n"); 
    fprintf(fp,"%d\n",sayi); 
    fprintf(fp,"\n"); 
} 
fclose(fp); 
return 0; 

}

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