【发布时间】:2015-06-12 01:06:51
【问题描述】:
我正在尝试使用 scanf 填充 char 指针数组以将输入存储为字符串。变量 T 用于动态构建大小为 T 的数组。然后输入并显示 T 数量的字符串,但是当我填写数组时,例如如果 T = 2 第一行可能是狗,第二行是猫,它会打印出“cdog”和“cat”。所以第一个字符串的第一个字母然后是第二个字符串的全部。我不确定我在使用 char* 时的错误在哪里。任何帮助,将不胜感激。
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main()
{
int T;
int i;
scanf("%d",&T);
char *new_array = (char*)malloc(T * sizeof(char));
for (i = 0; i < T; ++i)
{
scanf("%s", new_array+i);
}
for (i = 0; i < T; i++)
{
printf("%s\n", new_array+i);
}
}
【问题讨论】:
-
您没有 char 指针数组。你有一个字符数组。
-
"然后输入了 T 个字符串..." 你已经为 一个 字符串分配了内存。
-
标准警告:请do not cast
malloc()和C中的家人的返回值。 -
另外,
freemalloced 内存在使用后不会导致内存泄漏
标签: c arrays string char scanf