扫描验证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,那将是不好的;将其添加到变量定义中就可以了。没有简单的经验法则;您必须知道为什么以及何时何地添加一个。