我想在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]);
}
}
答案 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;
}