如果输入包含点,如何以编程方式检查?

时间:2015-12-09 19:22:43

标签: c for-loop input printf

我需要检查用户输入是否包含点,是否按下了回车键。 (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?
    }
}

2 个答案:

答案 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)
{
    …
}