【发布时间】:2020-12-09 03:49:36
【问题描述】:
如何修复此代码以打印数组中的单词?此外,这是为 n 最大大小为 40 的字动态分配内存的正确方法吗?
int main() {
int n;
char *arr;
int i;
printf("Give me a number:");
scanf("%d", &n);
arr = malloc(n * 40);
for (i = 0; i < n; i++)
{
printf("Give me a word: ");
scanf("%s", &arr[i]);
}
for (i = 0; i < n; i++)
{
printf("%s", arr[i]); //< --problem here
}
return 0;
}
【问题讨论】:
-
不,
chars 和字符串不一样。 -
尝试例如
typedef char BUF[40];然后BUF *arr = malloc(n * sizeof(BUF));。
标签: arrays c string dynamic-memory-allocation