Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何以编程方式检查输入是否包含点?_C_For Loop_Input_Printf - Fatal编程技术网

C 如何以编程方式检查输入是否包含点?

C 如何以编程方式检查输入是否包含点?,c,for-loop,input,printf,C,For Loop,Input,Printf,我需要检查用户输入是否包含点,以及是否按了回车键。(文本。[输入]) 若确实如此,则不要将该行写入文件并退出,否则继续输入并将该行写入文件 以下是到目前为止我拥有的代码: 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!

我需要检查用户输入是否包含点,以及是否按了回车键。(
文本。[输入]

若确实如此,则不要将该行写入文件并退出,否则继续输入并将该行写入文件

以下是到目前为止我拥有的代码:

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?
    }
}

不要关闭你没有打开的文件。在验证名称不包含点的循环之后使用文件,如下所示:

 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
我需要继续使用scanf,如果它没有找到点。我需要 程序运行,直到找到点为止。这就是为什么我用其他的


正如前辈所写,你不需要一个else语句。您只需要将
scanf()
和所有其他内容包装在一个循环中,例如。g

while (scanf("%20s", name) != EOF)
{
    …
}

如果可以成功完成for循环,则不需要else语句,这意味着在输入中找不到点。您想对文件执行的任何操作都可以在for循环之后执行。当
scanf
返回用户已按enter键的信息时,否则
scanf
调用将无限期阻塞。是否允许使用
string.h
中定义的函数
strchr()
?去玩它:)@iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii。我需要程序运行,直到找到点为止。这就是为什么我用else。我把名字写进文件。fprintf(文件“%s\n”,名称);