Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 指向新字符串的字符检查的指针数组_C - Fatal编程技术网

C 指向新字符串的字符检查的指针数组

C 指向新字符串的字符检查的指针数组,c,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 您正在为指针分配内

我有一个指向字符的指针数组,在那里我从控制台存储字符串。如果输入一个新字符串来输入索引,我如何检查?我曾想过这样的事情,但我总是犯错误

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

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

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

您只为
*arr
分配了内存,但尚未为
**arr
分配内存
arr
现在指向可以存储10个字符指针的内存,但这些字符指针指向哪里?“还没有”,所以你首先必须让它们指向内存,然后才能通过
arr[i][j]

解除对它们的引用。我认为你要么也需要对j进行malloc,要么使用二维数组和[i*j_size+j]进行索引。此外,scanf还可以使用
%s
读取字符串


另请参见(以及rosetta代码的其他示例)。

我的代码不起作用,似乎在输入字符串后,它只是继续执行while循环几次,然后请求一个新字符串。如何做到这一点,我想从控制台在数组中存储一个字符串,每个\n表示现在出现的一个新字符串。有什么想法吗?你为一个包含10个指向char的指针的数组分配了内存。您还需要为每个指针分配内存。您可能应该将第一次分配初始化为所有NULL。在读取任何字符串之前。实际上,[j]是未分配内存中的偏移量