不通过命令行写入文本文件

时间:2018-12-10 18:32:03

标签: c command-line segmentation-fault

我正在尝试创建一个程序,该程序可以将用户输入的年龄,名字和姓氏保存在文本文件中,但是它没有编写通过命令行输入的文本文件。文件名用作命令行参数。当用户输入年龄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 :(得分:0)

如果文件不存在,则在您以读取模式打开时,打开将失败。发生这种情况时,不会检查打开是否成功,因此事后使用(NULL)会导致分段错误。

您还提到了一个循环,但是这里没有循环。您也不会检查输入是否有效