在 C 中检查 'fgets' 的输入
Checks input of 'fgets' in C
我想检查用户是否写了少于 30 个字符。这是我下面的代码,但它无法按照我想要的方式检查用户的输入。例如,如果我输入 40 个字符,它不会打印 Not valid input
。谁能解释一下如何检查输入是否正确?
int main(int argc, char **argv) {
char string[31];
printf("Enter a string: ");
if (fgets(string, 30, stdin)) {
printf("Enter a character too: ");
char c;
scanf("%c", &c);
char *ptr = string;
if (ptr = contains(ptr, c)) {
printf("Found at position %ld\n", ptr - string + 1);
} else {
printf("Character did not found.\n");
}
} else {
printf("Not valid input\n");
}
return 0;
}
fgets()
读取整行 并将换行保留在缓冲区中 。如果缓冲区比需要的小,缓冲区将不包含换行符,换行符将与该行的其余部分一起在后续调用 fgets()
.
中读取
fgets(buffer, sizeof buffer, stdin);
size_t len = strlen(buffer);
if (!len) /* mal-formed input */;
if (buffer[len - 1] != '\n') /* error if not eof */;
你可以试试:
char string[32];
printf("Enter a string: ");
if(fgets(string,32,stdin)>30) {
printf("Error: Too many characters");
return 1;
}
我想检查用户是否写了少于 30 个字符。这是我下面的代码,但它无法按照我想要的方式检查用户的输入。例如,如果我输入 40 个字符,它不会打印 Not valid input
。谁能解释一下如何检查输入是否正确?
int main(int argc, char **argv) {
char string[31];
printf("Enter a string: ");
if (fgets(string, 30, stdin)) {
printf("Enter a character too: ");
char c;
scanf("%c", &c);
char *ptr = string;
if (ptr = contains(ptr, c)) {
printf("Found at position %ld\n", ptr - string + 1);
} else {
printf("Character did not found.\n");
}
} else {
printf("Not valid input\n");
}
return 0;
}
fgets()
读取整行 并将换行保留在缓冲区中 。如果缓冲区比需要的小,缓冲区将不包含换行符,换行符将与该行的其余部分一起在后续调用 fgets()
.
fgets(buffer, sizeof buffer, stdin);
size_t len = strlen(buffer);
if (!len) /* mal-formed input */;
if (buffer[len - 1] != '\n') /* error if not eof */;
你可以试试:
char string[32];
printf("Enter a string: ");
if(fgets(string,32,stdin)>30) {
printf("Error: Too many characters");
return 1;
}