char的指针数组检查新字符串

时间:2014-12-05 18:31:11

标签: c

我有一个指向字符的指针数组,我从控制台存储字符串。如果输入一个新的字符串以便对索引进行处理,我该如何检查?我想到了类似的东西,但我总是得到分段错误。

char** arr;
int i = 0;
int j = 0;

arr = malloc(sizeof(char*) * 10);

while (arr[i][j] != '\n') {
    scanf("%c", &arr[i][j]);
    j++;
}
i++;
// Read next string here

3 个答案:

答案 0 :(得分:2)

您正在为指针分配内存。类似地,你需要在向它写入内容之前使这些指针指向某个内存位置。喜欢

arr[i] = malloc(sizeof(char) *20);

答案 1 :(得分:0)

您只为*arr分配了内存,但尚未为**arr分配内存。 arr现在指向可以存储10个char指针的内存,但这些char指针指向哪里?为了“没有”,所以你首先必须让他们指向记忆才能通过arr[i][j]取消引用它们

答案 2 :(得分:0)

我认为你或者也需要对j进行malloc,或者使用2维数组和[i * j_size + j]进行索引。此外,scanf可以使用%s读取字符串。

另请参阅http://rosettacode.org/wiki/User_input/Text#C(以及有关rosetta代码的其他示例)。