#include<stdio.h>
int main(){
char *msg[10];
scanf("%s", msg[0]);
scanf("%s", msg[1]);
scanf("%s", msg[2]);
scanf("%s", msg[3]);
}
当我尝试运行此代码时,它会出错。难道我做错了什么?我还是C语言的初学者。
答案 0 :(得分:1)
麻烦的是char *msg[10]
是一个包含10个char指针的数组,你需要显式分配内存或使用静态数组。
方法-1:强>
for (i=0; i<10; i++)
{
msg[i] = malloc(sizeof(char) * 100)
}
选项-2 强>
char msg[10][100]
答案 1 :(得分:1)
char *msg[10];
此处msg
是 10个字符指针的数组,并且它们未初始化。如果要在其中存储内容,请先动态分配内存。
for(int i = 0; i < 10; i++) {
msg[i] = malloc(MAX_NO_OF_BYTES); /* MAX_NO_OF_BYTES is the no of bytes you want to allocate */
scanf("%s",msg[i]); /* store the data into dynamically allocated memory */
}
打印它&amp;按你的意愿进行操作
for(int i = 0; i < 10; i++) {
printf("%s\n",msg[i]);
/** operation with array of char pointer **/
}
完成工作后,使用free()
为每个字符指针释放动态分配的内存为
for(int i = 0; i < 10; i++) {
free(msg[i]);
}
我希望它有所帮助。