C语言求助:如何将.txt文件中的字符串存入字符数组?这个 .txt 文件是从命令行参数 btw 中读取的。

Posted

技术标签:

【中文标题】C语言求助:如何将.txt文件中的字符串存入字符数组?这个 .txt 文件是从命令行参数 btw 中读取的。【英文标题】:C language help:How to store strings from a .txt file into a character array? This .txt file is read from a command line argument btw. 【发布时间】:2017-02-07 04:55:15 【问题描述】:

我需要创建一个程序,该程序将使用命令行参数读取 .txt 文件,然后加密该 txt 文件中的消息。

我用指针打开txt文件,打开成功。但我需要将消息(由许多段落组成)存储到单个字符数组中,以便我可以开始加密。

例如,如果消息是:我爱狗

我想将该消息存储到一个字符数组中,例如:

 char word[5000];
 char word[0] = I;
 char word[1] = l;
 char word[2] = o;
 etc....

我尝试使用 for 循环将消息存储到单个字符数组中,但是当我尝试打印出该数组时,它没有显示在我的命令行中。

如何将 .txt 文件中的消息存储到单个字符数组中?

这是我的代码:

int main(int argc, char*argv[])

int a;
printf("The number of arguements is :%d \n", argc);

for(a=0; a<argc; a++)

        printf("argc %d is %s \n",a, argv[a]);

//本节使用文件指针从文本文件中读取,然后显示出来

printf("\n");
char * fname= argv[1];
FILE *fptr= fopen(fname, "r");
char word[5000];
int c;
if (fptr==0)
    
        printf("Could not open file\n");
    else
        
            printf("FILE opened successfully \n");

        

while (fgets(word, 5000, fptr) !=NULL)

    printf("%s \n", word);



fclose(fptr);

【问题讨论】:

您的代码对我有用...我假设此代码 sn-p 中缺少的实际代码中有一个 #include &lt;stdio.h&gt;。这是我做的唯一一件我在这里看不到的事情。 【参考方案1】:

您的 while 循环使用 fgets,旨在逐行读取。如果您想要一个表示文件字节的字符数组,请使用 fread。首先你需要知道文件有多大;为此使用 stat 或 fstat 。

 #include <stat.h>
 struct stat statbuf;
 int FS;
 char* buffer
 if (fstat(fileno(fptr),&statbuf))
    ... handle error
 
 FS = statbuf.st_size;

然后,对于现在在 FS 中的文件大小,分配一些字节

 buffer = (char*) malloc(FS)

然后阅读内容

 fread(buffer, 1, FS, fptr)

【讨论】:

次要:为什么使用int 代替FS.st_sizeoff_t 类型,fread 期望 size_t

以上是关于C语言求助:如何将.txt文件中的字符串存入字符数组?这个 .txt 文件是从命令行参数 btw 中读取的。的主要内容,如果未能解决你的问题,请参考以下文章

c语言 如何读取中文字符串

动态数组c语言 求助!

C语言关于小数存入数组函数编写

如何用C语言统计一个数据文件中的数据个数

C语言截取字符串

C语言如何读取TXT全部字符?