【发布时间】:2018-12-01 19:09:04
【问题描述】:
我得到一个空字符串数组,大小为1(自动为1,我真的不知道为什么)
我想为那个空字符串数组分配一个 10 的大小,但我不知道怎么做?
这是我目前的代码
char empty_string_array[] = "";
printf("Enter some strings: eg. asdfjklo...: ");
scanf("%s", &empty_string_array[0]);
int len_of_string = strlen(empty_string_array);
printf("%d\n", len_of_string);
输入:输入一些字符串...:a 输出:字符串的当前长度:1
重启 输入:输入一些字符串......:ab *检测到堆栈粉碎*中止(核心转储)
我想这意味着,没有为多个字符串分配内存,除了已经存在的那个
我知道我可以使用:char empty_string_array[11] = "";对于 10 个字符串和 \0 ,但这并不是最好的解决方案
【问题讨论】:
-
char empty_string_array[11] = ""; for 10 strings and the \0 ,, but this isnt really the best solution为什么? -
因为每个人都一直告诉我,我应该使用 malloc 并分配内存而不是使用缓冲区
-
我不确定你是否应该听“每个人”的声音;最好找一本好书来学习。
-
一本好书,就像在干草丛中找针一样:)
-
但你可能是对的!
标签: c arrays string malloc buffer