小编use*_*924的帖子

如何为C中未知长度的字符串数组分配内存

我有一个数组,比方说,文本,包含由另一个函数读入的字符串.弦的长度是未知的,它们的数量也是未知的.我应该如何尝试将内存分配给字符串数组(而不是字符串本身,已经作为单独的数组存在)?

我现在设置的东西似乎很好地读取了字符串,似乎正在进行我想要正确完成的后处理(我尝试使用静态数组).但是,当我尝试printf文本元素时,我遇到了分段错误.更确切地说,当我尝试打印文本的特定元素(例如文本[3]或文本[5])时,我会出现分段错误.我认为这意味着我正在错误地为文本分配内存并且所有读取的字符串都没有正确保存到文本中?

到目前为止,我已经尝试了不同的方法,例如首先分配一定数量的一些size_t=k , k*sizeof(char),然后重新分配更多内存(其中realloc k*sizeof(char)) if cnt == (k-2),cnt是**文本的索引.

我试图搜索这个,但我发现的唯一类似的问题是有一定数量的未知长度的字符串.

我想尽可能多地弄清楚,并且由于这个原因,我没有发布实际的代码.但是,如果没有任何意义,我会发布它.

编辑:这是代码

int main(void){
  char **text;
  size_t k=100;
  size_t cnt=1;
  int ch;
  size_t lng;

  text=malloc(k*sizeof(char));

  printf("Input:\n");

  while(1) {

    ch = getchar();
    if (ch == EOF) {
      text[cnt++]='\0';
        break;
    }

    if (cnt == k - 2) {
      k *= 2;
      text = realloc(text, (k * sizeof(char))); /* I guess at least this is incorrect?*/
    }

    text[cnt]=readInput(ch); /* read(ch) just reads the line*/
    lng=strlen(text[cnt]);
    printf("%d,%d\n",lng,cnt); …
Run Code Online (Sandbox Code Playgroud)

c arrays string dynamic realloc

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

arrays ×1

c ×1

dynamic ×1

realloc ×1

string ×1