输入字符串比c中char数组的大小长

问题描述 投票:0回答:1
#include <stdio.h>
#include <string.h>


int main(void) {
    char user[] = { [0 ... 9 ] = '\0' };  //  Initialising a char array of len 10 and default all element of char array is = '\0'
    printf("Enter your name >> ");  // stdout ->    Enter your name >> 
    scanf("%[^\n]c", user);  //  stdin -> `aldjflajdflajdflajfdlajfdlajfd` NODE: len of entr string from stdin is > then 10
    printf("%zu\n", strlen(user));  //  33
    return 0;
}

我有一个 char 数组 [10] 但输入字符串怎么比 char 数组长?

xcode unix
1个回答
0
投票

如果我正确理解了这个问题,您会想知道为什么可以将更多元素输入到具有 10 个元素的数组中。我对这个问题的回答如下:您已经在内存中的某个位置静态分配了 10 个字节的内存空间,后面可能有也可能没有额外的可用空间。接下来你要做的就是向该数组中加载不必要的元素,有时你不会得到任何错误,但其他时候(85% 的情况下都会发生),运行程序后,你会得到以下输出:“**堆栈粉碎检测到***:终止中止(核心转储)”,这意味着您基本上覆盖了未指定的内存,可能会损害某些数据等。因此,我的建议是在输入后创建一个附加条件,您预计程序的用户输入超过 10 个字符,从而向他们指示错误。另一种解决方案是动态内存分配。这都是我从非常基本和直接的角度出发的。热烈的问候!

© www.soinside.com 2019 - 2024. All rights reserved.