使用指针创建字符串数组

时间:2014-05-30 17:33:37

标签: c arrays pointers

我想在C中创建一个字符串数组。我希望计算机接受用户的值并将其存储在字符串name[31]中。这应该发生,直到用户输入 Ctrl + D 。当用户键入名称时,将其存储在另一个名为storage的数组中。

到目前为止我的代码:

#include<stdio.h>
#include<string.h>

int main() {
    char name[31];
    char *storage[31];
    int i = 0;
    //Reading the name
    while( (int) name != EOF )
    {
        sscanf("%s", name);
        *storage[i] = &name;
        i++;
    }
    for ( i = 0; i < 31 ; i ++)
    {

        printf("%s", *storage[i]);
    }
}

1 个答案:

答案 0 :(得分:1)

这可能会有所帮助。它仅限于31个名称,您仍然需要弄清楚realloc。如果输入Ctrl + D或输入31个名称,它将停止。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main() {
    char name[31];
    char *storage[31]; // declares 31 pointers to char
    int i = 0;
    int iEach;
    //Reading the name
    while( fgets ( name, 31, stdin) > 0 )  // names may contain spaces so use fgets
    {

        storage[i] = malloc ( strlen(name) + 1); // allocate storage for each name
        strcpy ( storage[i], name); // copy the name to the array
        i++;
        if ( i == 31) { // out of pointers so exit the while loop
            break;
        }
    }
    for ( iEach = 0; iEach < i ; iEach ++)
    {

        printf("%s", storage[iEach]);
    }
    for ( iEach = 0; iEach < i ; iEach ++)
    {

        free ( storage[iEach]); // free allocated memory
    }
    return 0;
}