在C中读取字符串数组

Jai*_*dra 3 c arrays string

我想读一个数组中的一组字符串.数组的大小将在运行时使用mallocalloc即接受字符串的数量作为输入来决定.我尝试了以下代码,但它没有用.

char *array;
array=(char*)malloc(sizeof(char)*t); //t is the size of array
for(int temp=0;temp<t;temp++)
{
    gets(a[temp]);
}
Run Code Online (Sandbox Code Playgroud)

在整数数组的情况下也是如此.
请帮我找到解决方案.

unw*_*ind 5

C没有任何自动内置支持来存储字符串,没有变量是"字符串",并且可以自动增长以保持适当数量的字符.你需要自己分配内存.

你现在正在做的是为正确数量的字符指针分配位置,但不为任何字符分配.所以gets()调用是写入未分配的内存,这是未定义的行为.由于整数完全适合每个单独的分配,这就是类似代码适用于整数的原因.字符串更复杂,因此您需要做更多的工作.

如果这些字符串的长度有任何已知上限,则可以使用固定长度的临时缓冲区,然后在知道所需大小后将其从该文件复制到新分配的动态内存中.如果没有这样的绑定,你需要重复相同的概念,通过读取一个固定的块,存储它,如果没有找到行的结尾,读取另一个块,增加该字符串的内存分配realloc(),附加新的字符,并重复直到该行结束.

作为旁注,您应该始终避免使用gets(),因为它不支持保护程序免受缓冲区溢出.使用在同一页面上记录的fgets()会好得多.