2015-10-22 5 views
1

Я пытаюсь (как говорится в названии) читать из файла в main, используя argc и argv, беря имя файла из командной строки и передавая его через main в функцию void, которая открывает, читает и пишет. Однако им получение Cannot open file...Segmentation fault.Чтение файла с использованием argc и argv

void file_pass (char * argv[]) 
{ 

FILE *file_name; 
if ((file_name = fopen(argv[1], "r")) == NULL) 
    { 
     printf("Cannot open file ...\n"); 
    } 

fclose(file_name); 

} 

Это заставляет меня думать, что он не открывает файл правильно, но я не уверен, почему.

+1

Пожалуйста, прекратите уничтожать свои вопросы после того, как они получили ответ. –

ответ

4

В функции void file_pass (char * argv[]) -

if ((file_name = fopen(argv[1], "r")) == NULL) 

Вместо этого, вы должны попробовать это -

if ((file_name = fopen(argv[0], "r")) == NULL) // file's name is in argv[0] in funciton 

Поскольку индексация массива начинаются с 0 и в функции argv[1] может не содержать ничего.

+1

Это работает отлично. Странная мысль, я думал, что argv [0] всегда было именем программы, а argv [1] в этом случае было бы именем введенного файла? –

+0

Ahhh Я вижу. C настолько изменчив: D –

+0

@Finlandia_C Да, при передаче массивов может получиться немного сложнее :) – ameyCU

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