繁体   English   中英

如何在C中读取文件并将字符存储在变量中

[英]How do I read a file in C and store the characters in a variable

我对C完全陌生,因此急需帮助。 我用fopen()读取文件,然后使用fgetc()获取文件内容。 我想知道的是如何访问fgetc()返回的行,以便将第4个至第8个字符放入char数组中。 下面是我在网上找到的示例,但是在解析数据返回值时遇到了困难,我仍然对C缺乏深刻的了解,也没有获得如何使用int来存储一行字符的方法。

    FILE *fr;
fr = fopen("elapsed.txt", "r");
int n = fgetc(fr);
    while(n!= EOF){
        printf("%c", n);
        n = fgetc(fr);
    }   printf("\n");

在这里1首先打开文件2获得文件的大小3为字符指针4分配大小,并从文件中读取数据

FILE *fr;
char *message;
fr = fopen("elapsed.txt", "r");
/*create variable of stat*/
struct stat stp = { 0 };
/*These functions return information about a file. No permissions are required on the file itself*/
stat("elapsed.txt", &stp);
/*determine the size of data which is in file*/
int filesize = stp.st_size;
/*allocates the address to the message pointer and allocates memory*/
message = (char *) malloc(sizeof(char) * filesize);
if (fread(message, 1, filesize - 1, fr) == -1) {
    printf("\nerror in reading\n");
    /**close the read file*/
    fclose(fr);
    /*free input string*/
    free(message);
}
printf("\n\tEntered Message for Encode is = %s", message);

PS不要忘记添加#include <sys/stat.h>

您没有使用fgetc检索行。 您一次从文件中检索一个字符。 该示例将不断检索字符,直到遇到EOF字符(文件末尾)为止。 看一下对fgetc的描述。

http://www.cplusplus.com/reference/clibrary/cstdio/fgetc/

在while循环的每次迭代中,fgetc都将检索一个字符并将其放入变量“ n”。 可以帮助您使用C语言中的“字符”的东西只是将其视为一个字节,而不是实际字符。 您在这里不了解的是,int是4个字节,字符是1个字节,但是两个都可以为相同的ASCII字符存储相同的位模式。 唯一的不同是内部变量的大小。

上面的示例显示带有“%c”的printf,这意味着将“ n”中的值当作ASCII字符对待。

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

您可以在while循环中使用计数器来跟踪您的位置,以从文件中找到第4个和第8个值。 您还应该考虑如果输入文件小于最大大小会发生什么。

希望能有所帮助。

好吧,请看一下它的盒子尺寸,我可以有一个30厘米x 30厘米的盒子,可以容纳1个泡沫字母。 现在我正在调用的函数“可以”返回一个60cm x 60cm的字母,但它有99%的可能性返回30cm x 30cm的字母,因为我知道它的读数-我知道是否给它一个60cm x 60cm的盒子永远不会感到意外。

但是,如果我确定结果始终是30cm x 30cm的盒子,那么我知道我可以转换返回60cm x 60cm盒子的函数的结果而不会丢失任何东西

暂无
暂无

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

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