从控制台读取字符串

时间:2014-12-06 09:20:51

标签: c

我想用一个指向char的指针数组编写一个程序,我在其中存储从控制台读取的字符串。字符串由\ n确定。我有什么想法可以做到这一点吗?

到目前为止混合了伪代码的代码:

char** arr;

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

while (No \n read) {
    // Store the string in the array
}

我真的不知道如何做到这一点。

2 个答案:

答案 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变量分配内存,然后将其存储在指针数组中。