繁体   English   中英

长度可变的字符串数组

[英]string array of varying length

我正在编写一个C代码来逐行读取包含字母CR,LF,'\\ 0'的文件。 以下是我所附的代码示例。 我只想存储从每一行到数组的字母,这样数组中的行数就等于文件和列中的行数,其长度应不定(取决于第i行中的字符数)。

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

int main()
{
    char *buffer[100];
    char temp[128];
    int c,i=0,j=0;
    int pos=0;
    FILE *file;
    file = fopen("input", "r");
    if (file) {
        while ((c = getc(file)) != EOF){
            if ((c>=65 && c<=90) || (c>=97 && c<=122))
                temp[pos++]=c;
            else if(pos>1) {
                temp[pos]='\0';
                buffer[i]=temp;
                printf ("%s\n",temp);
                i++;
                pos=0;
            }
        }
    }
    fclose(file);
    while (j<i){
        printf("%s\n",buffer[j]);
        j++;
    }
}

如果我运行上述代码,则我所有的buffer [j]都包含相同的字符串。 谁能帮助我找出代码中的错误。

buffer[]是一个指针数组,在while循环中,您将每个指针都指向数组temp[]

buffer[i]=temp; // assign the address of temp to buffer[i]

然后,您要更改temp[]数组的内容 ,但是地址始终相同。

如果要将temp数据存储buffer[]每个位置,则需要分配内存并将数据复制到那里。 更像:

buffer[i]=malloc(strlen(temp) + 1);
strcpy(buffer[i], temp);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM