读取文件时打印随机字符
Printing random characters when reading file
我有一个 config.txt 文件,如下所示:
2
2
[3, 8]
[4, 2]-[12, 7]
[1, 10]-[12, 1]
我正在尝试阅读其内容以供稍后处理。但是,当我尝试我的程序并打印文件内容时,它输出的字符比文件中的字符多,即使我自己终止字符串也是如此。这就像文件的长度被程序高估了一样。这是 printf 的输出:
2
2
[3, 8]
[4, 2]-[12, 7]
[1, 10]-[12, 1]df
显然 df 这两个字符不应该存在。我究竟做错了什么。我用谷歌搜索,但找不到明确的答案。这是我的 C 程序:
#include <stdio.h>
#include <stdlib.h>
void readFile(const char *fileName, char *text);
void readFile(const char *fileName, char *text)
{
FILE *f;
long length;
f = fopen(fileName, "r");
fseek (f, 0, SEEK_END);
length = ftell (f);
fseek (f, 0, SEEK_SET);
text = malloc(length + 1);
if(text)
{
fread (text, 1, length, f);
}
fclose (f);
text[length] = '[=12=]';
printf(text);
}
int main(void)
{
char *fileText;
readFile("config.txt", fileText);
return 1;
}
就像 user3121023 已经建议的那样,将 fopen 语句中的 "r" 更改为 "rb" 解决了问题。
我有一个 config.txt 文件,如下所示:
2
2
[3, 8]
[4, 2]-[12, 7]
[1, 10]-[12, 1]
我正在尝试阅读其内容以供稍后处理。但是,当我尝试我的程序并打印文件内容时,它输出的字符比文件中的字符多,即使我自己终止字符串也是如此。这就像文件的长度被程序高估了一样。这是 printf 的输出:
2
2
[3, 8]
[4, 2]-[12, 7]
[1, 10]-[12, 1]df
显然 df 这两个字符不应该存在。我究竟做错了什么。我用谷歌搜索,但找不到明确的答案。这是我的 C 程序:
#include <stdio.h>
#include <stdlib.h>
void readFile(const char *fileName, char *text);
void readFile(const char *fileName, char *text)
{
FILE *f;
long length;
f = fopen(fileName, "r");
fseek (f, 0, SEEK_END);
length = ftell (f);
fseek (f, 0, SEEK_SET);
text = malloc(length + 1);
if(text)
{
fread (text, 1, length, f);
}
fclose (f);
text[length] = '[=12=]';
printf(text);
}
int main(void)
{
char *fileText;
readFile("config.txt", fileText);
return 1;
}
就像 user3121023 已经建议的那样,将 fopen 语句中的 "r" 更改为 "rb" 解决了问题。