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]是未分配内存中的偏移量