我对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");
发布于 2012-02-03 14:25:41
您不能使用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个值。您还应该考虑如果输入文件小于您的最大大小会发生什么。
希望这能有所帮助。
发布于 2012-02-03 14:36:34
这里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>
。
发布于 2012-02-03 13:23:39
好的,看看它的盒子大小,我可以有一个30厘米x 30厘米的盒子,可以容纳我现有的1个泡沫信。现在,我调用的函数“可以”返回一个60 am x 60 am的字母,但它99%的可能返回一个30 am x 30 am的字母,因为我知道它的读数--我知道如果我给它一个60 am x 60 am的盒子,结果总是适合的,没有任何意外。
但是,如果我确定结果始终是一个30 am x 30 am的框,那么我就知道我可以转换返回aa 60 am x 60 am框的函数的结果,而不会丢失任何内容。
https://stackoverflow.com/questions/9124045
复制相似问题