передача имени файла в качестве аргумента - PullRequest
0 голосов
/ 01 марта 2011
char fname[256];
printf("Enter file name\n");
scanf("%123s",fname);
strcat(fname,".txt");

FILE *inputf;
inputf=fopen(fname,"w");

if (inputf!=NULL)
    printf("found");
else
    printf("not found");

косят проблема в том, что независимо от того, какое имя файла я ввожу, я получаю не нулевой указатель. Может ли кто-нибудь объяснить, почему ??

Ответы [ 2 ]

3 голосов
/ 01 марта 2011

fopen (имя файла, "w") создаст новый файл.Поэтому, если вы вводите допустимое имя файла и имеете соответствующие разрешения для файловой системы, оно должно быть успешным.

Если вы пытаетесь открыть существующий файл, используйте:

fopen(filename, "r")

(Обратите внимание на режим «r» вместо «w».)

0 голосов
/ 01 марта 2011

Не это: char fname[256]; printf("Enter file name\n"); scanf("%123s",fname); strcat(fname,".txt"); F FILE *inputf; inputf=fopen(fname,"w"); // <--!!! if (inputf!=NULL) printf("found"); else printf("not found");</p> <p>but this instead:</p> <p>char fname[256]; FILE *inputf; </p> <p>inputf=fopen(fname,"w");<br> printf("Enter file name\n"); </p> <p>// you know that you can't ever, EVER use scanf( ) so // remove this time bomb and use something else scanf("%123s",fname); </p> <p>strcat(fname,".txt"); inputf=fopen(fname,"w"); if (inputf!=NULL) { printf("found"); } else { printf("not found"); }

Теперь, какой указатель не был NULL? Вы не могли бы скомпилировать код так, как он у вас был, так как узнать, что было или не было NULL?

- Пит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...