在C中修改字符串数组中的字符串

时间:2014-06-28 00:39:00

标签: c arrays string gets

这是我的问题......我创建了一个像这样的字符串数组..

char *name[12];

然后用户键入12个不同的名称,以便我可以将它们保存在该数组中。但众所周知,如果你没有初始化一个变量,它就会产生“垃圾”。在里面。所以我开始正确保存名称,直到第5个名字,然后它崩溃,我不知道为什么。所以我尝试初始化每个元素,但它不允许我更改内容。

这是我写入数组的每个元素的方式:

printf("Type your name: ");
fflush(stdin);
gets( name[0] ); //I use a for to move into every element

我想知道是否有任何方法可以初始化阵列,并在此之后更改它的内容。我试过strcpy();但我有同样的错误。或者如何删除垃圾'阻止它导致我的错误。

谢谢,对不起,如果我有任何拼写错误。英语不是我的母语。

2 个答案:

答案 0 :(得分:3)

你已经为12个指针分配了空间;你从未为12个字符串分配空间,更不用说将指向该空间的指针分配给数组中的指针。

答案 1 :(得分:1)

问题是你有你的char指针数组,但你没有以任何方式初始化它们或为它们分配空间。所以你不知道当你使用它指向的地址时会发生什么。

您必须循环遍历数组并初始化元素才能使用它们。

name[0] = malloc (SIZE);

您可以尝试将用户输入读取到缓冲区以获取输入数据的长度,然后malloc只需要正确的空间量,或者在使用前分配预定义的内存块。