Не пишет текстовый файл через командную строку - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь создать программу, в которой она сохраняет возраст, имя и фамилию, введенные пользователем в текстовом файле, но не записывает текстовый файл, введенный через командную строку.Имя файла берется в качестве аргумента командной строки.Мой цикл должен закончиться, когда пользователь введет 0 для возраста.

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

int main (int argc, char *argv[])
{
    char fname[30], lname[30];
    int age;

    FILE *fp;

    fp = fopen (argv[1], "r");

    if (fp == NULL) {
    printf("No file\n");
    return 0;
    }

    printf("This program reads and saves ages and names in a text file.\n");

    do {
    printf("Enter person (age, first last): ");
    scanf("%d, %s %s", &age, fname, lname);
    fprintf(fp, "%d, %s %s", age, fname, lname);
    } while  (age > 0);



    fclose (fp);

    return 0;
}

1 Ответ

0 голосов
/ 10 декабря 2018

Если файл не существует, открыть не удастся, так как вы открываете в режиме чтения.Когда это происходит, он не проверяет, что открытие было успешным, поэтому его последующее использование (NULL) вызовет ошибку сегментации.

Вы также упоминаете цикл, но здесь нет цикла.Вы также не проверяете правильность ввода

...