繁体   English   中英

如何将每一行放入从 c 程序中的文件读取的数组中?

[英]How do I put each line in an array which read from the file in c program?

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循环中。

我认为您的问题是您希望将读取的内容存储为每行的字符串。好的,有多种方法可以实现它。 如果您不关心效率,您可以定义一个 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;
}

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

如果您想读取文件的全部内容并将其存储在一个数组中,您可以通过这种简单的方式执行此操作,但还有其他方式:

while( ( c = getc(file) ) != EOF )
  buffer[i++] = c;

其中buffer1000 elementschar数组(可以是任何数字,你想要), c是一个chari是一个用0初始化的int

暂无
暂无

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

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