首页 > 解决方案 > 如何将每一行放入从 c 程序中的文件读取的数组中?

问题描述

int main(int argc, char *argv)
{
    char filename[20]={};
    int count=0;

    if(argc==2)
    {
        strcpy(filename, argv[1]);
    }
    else
    {
        printf("Need 2 command line parameters\n");
    }

    FILE *fp=fopen(argv[1], "r");

    while(fgets(filename, 20, fp))
    {
        count++;
    }

    fseek(fp, 0, SEEK_SET);

    int ptr=(int)malloc(count*sizeof(int));
    while(fgets(filename, 20, fp))
    {
        ptr[i]=
    }

    return 0;

例如,我在文件中的数字是 19293 18239 19405 29302 10492 在每一行,我想把每一行放在一个数组中。我该怎么做呢?它不必在一个while循环中。

标签: c

解决方案


我认为您的问题是您希望将读取的内容存储为每行的字符串。好的,有多种方法可以实现它。如果您不关心效率,您可以定义一个 char 指针数组,使其尽可能最大,以包含文件中的所有行。你可以这样做:

char* content[MAX_LINE] = { NULL };
char tmp[20];
char* ptr;
int i=0;
size_t ret;
FILE* fp;
fopen_s(&fp,"1.txt", "r");
while (fgets(tmp, 20, fp) != NULL)
{
    ret = strlen(tmp);
    ptr = (char*)malloc(ret+1);
    strcpy_s(ptr, ret+1, tmp);
    content[i++] = ptr;
}

更好的方法是使用指针列表。


推荐阅读