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 <stdio.h>
。这是我做的唯一一件我在这里看不到的事情。
【参考方案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_size
是 off_t
类型,fread
期望 size_t
以上是关于C语言求助:如何将.txt文件中的字符串存入字符数组?这个 .txt 文件是从命令行参数 btw 中读取的。的主要内容,如果未能解决你的问题,请参考以下文章