c - C语言如何使用数组的数组来存储变长的字符串?

标签 c

下面是我的代码

int main(){
   char *movies[500];
   int i=0;

   while(*(movies[i])!='$'){
        scanf("%s",(movies[i]));
        i++;  
   }
}

输出是一个段错误。有人可以解释一下吗?

最佳答案

movies[i] = malloc(<size>); 

在写入内容之前为每个指针分配内存。

你的指针 movies[i] 没有指向任何有效的内存位置,你试图写入它,这将导致未定义的行为,从而导致崩溃。

一旦完成使用内存 free() 相应地

关于c - C语言如何使用数组的数组来存储变长的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28025847/

相关文章:

c - 声明时是否可以在数组名称中包含循环计数器? (在 C 中)

c - TEMP_FAILURE_RETRY 和 __USE_GNU

c - 某个参数有 3 个可能的值,并且有 n 个这样的参数,每个参数有 3 个值。需要通过随机更改来创建场景

比较 double 产生一个少一个和等于另一个

c - C 中 2 的负幂

c++ - 变量的前向声明?

c - 如何为不同的词汇级别构建符号表?

c - C将如何解析这句话?

c - .h 文件中的重新定义错误

C 字节 - 去掉多余的零(让它成为一个字符?)