我想用一个指向char的指针数组编写一个程序,我在其中存储从控制台读取的字符串。字符串由\ n确定。我有什么想法可以做到这一点吗?
到目前为止混合了伪代码的代码:
char** arr;
arr = malloc(sizeof(char*) * 5);
arr = malloc(sizeof(char) * 10);
while (No \n read) {
// Store the string in the array
}
我真的不知道如何做到这一点。
答案 0 :(得分:-1)
#include <stdio.h>
#include <stdlib.h>
int main(){
int i;
char **arr;
arr = malloc(sizeof(char*) * 5);//for 5 string
for(i=0;i<5;++i){
arr[i] = malloc(sizeof(char) * 10);//reserved storage space length 9
scanf("%9[^\n]%*c", arr[i]);//Read until \n, and discard \n
}
printf("\n");
//check print and free
for(i=0;i<5;++i){
puts(arr[i]);
free(arr[i]);
}
free(arr);
return 0;
}
int i, n;
char **arr;
arr = malloc(sizeof(char*) * 5);
for(i=0;i<5;++i){
arr[i] = malloc(sizeof(char) * 10);
}
i=0;
while(i<5 && 1==scanf("%9[^\n]%*c", arr[i]))
++i;
n = i;
printf("\n");
//check print
for(i=0;i<n;++i){
puts(arr[i]);
}
//deallocate
for(i=0;i<5;++i)
free(arr[i]);
free(arr);
答案 1 :(得分:-2)
你可以使用这个。
创建新的char变量并为其分配内存。然后得到这样的输入。
p=(char *)malloc(100);
while ( (*p=getchar())!='\n')p++;
*arr[0]=p;
如果要创建多行,则动态为该char变量分配内存,然后将其存储在指针数组中。