如何在c中使用scanf()检查输入字符数组(%s)的长度

  • 本文关键字:字符 数组 scanf c input scanf
  • 更新时间 :
  • 英文 :


我需要使用函数scanf()检查输入的长度。我正在使用一个char (%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;查看我尝试过的每种情况的输出

在这种情况下,我如何检查输入的长度?谢谢你。

使用scanf()检查输入字符数组(%s)的长度

  • 不使用原始"%s",使用宽度限制:1小于缓冲区大小。

  • 使用足够大小的缓冲区。char chr[] = "";只有1个char

  • 当输入不读取空字符时,使用strlen()确定字符串长度。

    char chr[100];
    if (scanf("%99s", chr) == 1) {
    printf("Length: %zun", strlen(chr));
    }
    
  • Pedantic:使用"%n"来存储扫描码可能读取空字符的偏移量(这种情况很少或不常见)。

    char chr[100];
    int n1, n2;
    if (scanf(" %n%99s%n", &n1, chr, &n2) == 1) {
    printf("Length: %dn", n2 - n1);
    }
    

sizeof是编译时一元操作符,可用于计算其操作数的大小。如果你想计算字符串的长度,你必须使用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;
}

相关内容

  • 没有找到相关文章

最新更新