我需要检查用户输入是否包含点,是否按下了回车键。 (Text text text .[Enter]
)
如果确实如此,则不要将该行写入文件并退出,否则继续输入并将行写入文件。
这是我到目前为止的代码:
FILE *File;
char *fileName = argv[1];
char *ptr;
char name[20];
File = fopen(fileName, "r");
scanf("%s", name);
fprintf(File, "%s\n", name);
for (ptr = name; *ptr!= '\0'; ptr++)
{
if (*ptr == '.')
{
printf("Exit");
fclose(File);
exit(0);
}
else
{
// How to make user continue to input and write to file?
}
}
答案 0 :(得分:0)
请勿关闭未打开的文件。使用文件之后验证该名称不包含任何点的循环(打开它,写入并关闭它),如下所示:
char *ptr;
char name[20];
FILE *f;
scanf("%s", name);
printf("%s\n", name);
for (ptr = name; *ptr!= '\0'; ptr++) {
if (*ptr == '.') {
printf("Exit");
exit(0);
}
}
f = fopen(name,"w"); // open for writing
if (f==NULL) { fprintf(stderr,"Can't open the file\n"); exit(1); }
fprintf(f,"Hello"); // write something
fclose(f); // close after using the file
答案 1 :(得分:0)
如果找不到dot,我需要继续使用scanf。我需要的 程序运行,直到找到点。这就是我使用其他原因的原因。
正如ForeverStudent所写,你不需要其他陈述。你只需要将scanf()
和所有其余的东西包在一个循环中,例如:克。
while (scanf("%20s", name) != EOF)
{
…
}