扫描验证C

扫描验证C,c,validation,C,Validation,这是否会验证我的用户输入只有两个元素,然后是换行符 char newline scanf(" %s %s%c", out, in, &newline); if(newline != '\n'){ error(); } 您必须检查scanf的退货状态;如果未返回3,则验证失败。您的检查将确保两个“单词”前面可能有空格。第二个单词后面不允许有空格。请注意,如果验证失败,您可能需要“吃掉”该行的其余部分-如果您在newline中有换行符,则不会这样做。否!如果第二个字符串和换行符之间有一

这是否会验证我的用户输入只有两个元素,然后是换行符

char newline
scanf(" %s %s%c", out, in, &newline);
if(newline != '\n'){
  error();
}

您必须检查scanf的退货状态;如果未返回3,则验证失败。您的检查将确保两个“单词”前面可能有空格。第二个单词后面不允许有空格。请注意,如果验证失败,您可能需要“吃掉”该行的其余部分-如果您在newline中有换行符,则不会这样做。

否!如果第二个字符串和换行符之间有一些空白字符,scanf将不正确。使用getc进行以下操作:

scanf("%s%s", buf1, buf2);
char newline = 0;
while((newline = getc()) == ' '  || newline == '\t');
if(newline != '\n'){
  error();
}
编辑:


正在添加尾随空格的大小写。

是的,可以。但前提是输入完全匹配:word

如果用户键入与该格式不同的内容,例如,第二个单词和enter之间的空格,则逻辑将失败

char newline;
char out[50];
char in[50];
scanf("%s %s%c", out, in, &newline);
if(newline != '\n')
{
  printf("error!");
}

此外,scanf还可以用来读取这样的输入。考虑使用输入来读取数据并分析数据。out和in需要有足够的空间来容纳用户输入的任何内容。您可能应该使用%ns,其中n是out或in-1指向的缓冲区大小。因此,如果您的缓冲区长度为12字节,%11s。我有char in[20]char out[20],谢谢,%20s%20x将您的缓冲区更改为21。在C语言中处理字符串时,一定要加1。@missingno:问题是知道在哪里和什么时候加1。如果一个以字符串%21s的格式添加到20,那将是不好的;将其添加到变量定义中就可以了。没有简单的经验法则;您必须知道为什么以及何时何地添加一个。