如何在 C 中使用 scanf() 检查输入字符数组 (%s) 的长度
How to check the length of input char array (%s) using scanf() in C
我需要使用函数 scanf()
检查输入的长度。
我正在使用一个字符数组 (%s) 来存储输入,但我无法检查此输入的长度。
下面是代码:
#include <stdio.h>
char chr[] = "";
int n;
void main()
{
printf("\n");
printf("Enter a character: ");
scanf("%s",chr);
printf("You entered %s.", chr);
printf("\n");
n = sizeof(chr);
printf("length n = %d \n", n);
printf("\n");
}
在我尝试过的每种情况下,它都会返回输出的“长度 n = 1”。
在这种情况下如何检查输入的长度?
谢谢。
sizeof
是一个编译时一元运算符,可用于计算它的大小 operand.if 你想计算你必须使用的字符串的长度 strlen()
.像这样
#include <stdio.h>
#include <string.h>
int main()
{
char Str[1000];
printf("Enter the String: ");
if(scanf("%999s", Str) == 1) // limit the number of chars to sizeof Str - 1
{ // and == 1 to check that scanning 1 item worked
printf("Length of Str is %zu", strlen(Str));
}
return 0;
}
to check the length of input char array (%s) using scanf()
不要使用原始 "%s"
,使用 宽度 限制:比缓冲区大小小 1。
使用足够大小的缓冲区。 char chr[] = "";
只是 1 char
.
当输入不读取空字符.
时,使用strlen()
确定字符串长度
char chr[100];
if (scanf("%99s", chr) == 1) {
printf("Length: %zu\n", strlen(chr));
}
迂腐:如果代码可能读取 空字符 ,请使用 "%n"
存储扫描的偏移量(这种情况很少见或经常遇到)。
char chr[100];
int n1, n2;
if (scanf(" %n%99s%n", &n1, chr, &n2) == 1) {
printf("Length: %d\n", n2 - n1);
}
我需要使用函数 scanf()
检查输入的长度。
我正在使用一个字符数组 (%s) 来存储输入,但我无法检查此输入的长度。
下面是代码:
#include <stdio.h>
char chr[] = "";
int n;
void main()
{
printf("\n");
printf("Enter a character: ");
scanf("%s",chr);
printf("You entered %s.", chr);
printf("\n");
n = sizeof(chr);
printf("length n = %d \n", n);
printf("\n");
}
在我尝试过的每种情况下,它都会返回输出的“长度 n = 1”。
在这种情况下如何检查输入的长度? 谢谢。
sizeof
是一个编译时一元运算符,可用于计算它的大小 operand.if 你想计算你必须使用的字符串的长度 strlen()
.像这样
#include <stdio.h>
#include <string.h>
int main()
{
char Str[1000];
printf("Enter the String: ");
if(scanf("%999s", Str) == 1) // limit the number of chars to sizeof Str - 1
{ // and == 1 to check that scanning 1 item worked
printf("Length of Str is %zu", strlen(Str));
}
return 0;
}
to check the length of input char array (%s) using scanf()
不要使用原始
"%s"
,使用 宽度 限制:比缓冲区大小小 1。使用足够大小的缓冲区。
char chr[] = "";
只是 1char
.当输入不读取空字符.
时,使用strlen()
确定字符串长度char chr[100]; if (scanf("%99s", chr) == 1) { printf("Length: %zu\n", strlen(chr)); }
迂腐:如果代码可能读取 空字符 ,请使用
"%n"
存储扫描的偏移量(这种情况很少见或经常遇到)。char chr[100]; int n1, n2; if (scanf(" %n%99s%n", &n1, chr, &n2) == 1) { printf("Length: %d\n", n2 - n1); }