#c
Вопрос:
#include <stdio.h>
int main (int argc, char **argv)
{
FILE* file;
char scratch[1024];
char filename[1024] = argv[1];
file = fopen( filename, "r" );
if( file != NULL ){
if( fgets( scratch, 1024, file ) != NULL ){
fprintf( stdout, "read line: %s", scratch );
}
fclose(file);
return 0;
}
}
По сути, если пользователь должен был запустить
./nameoftheprograme nameOfTheTextFile,
он должен вернуть первую строку текстового файла
Я получаю следующую ошибку: ошибка: недопустимое имя файла символа инициализатора[1024] = argv[1];
Комментарии:
1. Это не ответ, но почему бы вам не использовать argv[1] напрямую?
2. Вы не можете инициализировать массивы символов с помощью нелитеральных строк. Если вы хотите сохранить ссылку на аргумент, просто используйте
const char* filename = argv[1];
. Если вам нужно скопировать его в массив, используйтеstrncpy
.3. Я хочу, чтобы пользователь мог вводить любой файл, а не просто жестко кодировать имя argv[1] в проблему, чтобы он всегда запускал первый подобный файл.
Ответ №1:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
... your variables
char *filename;
if (argc>1)
{
filename = argv[1];
}
else
{
fprintf(stderr, "need a filenamen");
exit(1);
}
... your code
return 0;
}
Комментарии:
1. Это здорово, спасибо!