Ошибка сегментации при создании нового файла в C - PullRequest
1 голос
/ 05 апреля 2019

Я запутался, почему этот фрагмент кода возвращает ошибку сегментации. Обычно я пытаюсь создать новый текстовый файл, используя fopen() и fprintf().

    void my_function() {
        FILE *g;
        char s1[30];
        printf("\nNew file (text): ");
        scanf("%s",&s1);            //gets(s1);
        g = fopen(s1,"w");
        fprintf(g,"something");
        fclose(g);
}

Я попытался проверить действительность fopen с помощью:

if (g == NULL) {
       perror("fopen()");
       exit(1);
    }

, который возвращает fopen(): Bad address, так что, вероятно, в этом проблема. Есть идеи, что вызвало это и как это решить?

1 Ответ

4 голосов
/ 05 апреля 2019

Проблема на scanf("%s", &s1).Вместо этого напишите scanf("%s", s1);, потому что s1 уже является указателем.

То, что вы сделали, передали указатель на указатель.

...