我正在尝试创建一个程序,该程序可以将用户输入的年龄,名字和姓氏保存在文本文件中,但是它没有编写通过命令行输入的文本文件。文件名用作命令行参数。当用户输入年龄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;
}
答案 0 :(得分:0)
如果文件不存在,则在您以读取模式打开时,打开将失败。发生这种情况时,不会检查打开是否成功,因此事后使用(NULL)会导致分段错误。
您还提到了一个循环,但是这里没有循环。您也不会检查输入是否有效