从文件中读取文本,在数组中存储行



这是我的代码。它当前从文本文件中读取,每次一行。我使用strcpy将每一行存储到数组"lines"中。我的问题是,如何打印出这个数组的一个元素?当前此代码已编译并运行,但没有输出。

#include <stdio.h>
#include <string.h>
int main()
{
    FILE *ptr_file;
    char buf[1000];
    char lines[10][500];
    //num of strings, length of strings
    char *pointertoarray = lines[0];
    ptr_file =fopen("d1.txt","r");
    fgets(buf,1000, ptr_file)!=NULL;
    strcpy(buf, lines[0]);
    fgets(buf,1000, ptr_file)!=NULL;
    strcpy(buf, lines[1]);
    fclose(ptr_file);
    printf("%s", pointertoarray);
    return 0;
}   

This:

strcpy(buf, lines[0]);
应:

strcpy(lines[0], buf);

打印它,你可以这样做:

printf("%sn", lines[0]);
printf("%sn", lines[1]);

另外,你正在读取1000个字符的字符串并将其复制到500个字符的缓冲区…这可能不太好。调整缓冲区,使大小匹配,或者使用strny限制复制的字符数量,以免溢出。

在任何情况下,您可能希望使用循环来读入行,而不是硬编码。您可以使用fgets读取行,并为每个新行动态地使用malloc分配内存。这是一个更多的工作,但最终要好得多,因为它将允许您读取具有未知行数的文件,而不是必须事先决定要读取多少行。

strcpy的第一个参数是目的地。认为"任务"

您可能希望使用循环将其打印出来。下面的代码将打印出数组的所有内容。在C语言中,可以使用来代替,也可以使用while循环。

你可能想在main函数之外定义数组的大小:

#DEFINE SIZE1 1000;
#DEFINE SIZE2 10;

你可以说:

int count = 0;
int count2 = 0;
for(count1 = 0; count1 < SIZE1; count1++)
{
     for(count2 = 0; count2 < SIZE2; count2++)
    {
          printf("%c", lines[count2][count1]);
    }
       printf("n");
}

相关内容

  • 没有找到相关文章

最新更新