2013-12-22 3 views
1

Для задания Я пытаюсь вывести несколько файлов с разными именами, например. file_1.dat, file_2.dat и т. Д. Я надеялся, что смогу сделать это так же, как fprintf и fscanf, но это не сработает.Открытие файлов с последовательными именами файлов

Что бы кто-нибудь предложить (код ниже, что я использовал)

#include<stdio.h> 
#include<stdlib.h> 

int main() 
{ 
int i; 
for(i = 0; i < 3; i++) 
    { 
     FILE *file; 
     file = fopen("testing_%d.dat", i,"w"); 
    } 
} 
+0

Какая ошибка вы получаете? Пробовали ли вы отладку, установив точку прерывания или информацию о печати в STDOUT? – Bill

+0

Вам нужно будет построить строку, содержащую имя файла, а затем передать * это * на 'fopen'. –

ответ

0

Вы можете сначала написать имя файла к char [] с помощью sprintf(), а затем передать его в fopen().

char myFile[200]; 
sprintf(myFile, "testing_%d.dat", i); 
file = fopen(myFile, "w"); 
1

sprintf должно пригодиться.

#include<stdio.h> 
#include<stdlib.h> 

int main() 
{ 
int i; 
for(i = 0; i < 3; i++) 
    { 
     char buf[100] 
     FILE *file; 
     sprintf(buf, "testing_%d.dat", i); 
     file = fopen(buf, "w"); 
    } 
} 
0

file должен быть массивом FILE *. Кроме того, fopen не форматирует строку, такую ​​как printf. Измените логику открытия файла примерно на следующее:

#define NUM_FILES  (3) 
#define FILE_NAME_LENGTH (100) 

FILE *pFileArr[NUM_FILES]; 
char filename[FILE_NAME_LENGTH]; 

for(i = 0; i < NUM_FILES; i++) 
{ 
    snprintf(filename, FILE_NAME_LENGTH, "testing_%d.dat", i); 
    pFileArr[i] = fopen(filename, "w"); 
} 
Смежные вопросы