C FILE读取产生意外错误

打哈欠

我回到C并从文件读入时遇到错误。当我正在读取的文件长于1行时,下面的代码字很好,但是当其一行文本时,它会生成带有'> ??'的第二行 人物。只是想知道我在这里可能做错了什么。

我已经包含了代码,读取的text.txt文件和示例输出。

提前为任何帮助加油。

text.txt“您好,这是一个句子”

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>


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

FILE * fp;
char * buff;
int i = 0;


fp = fopen("text.txt", "a+");

if(fp == NULL)
{
    perror("exiting\n");
    exit(EXIT_FAILURE);
}

fseek(fp, 0, SEEK_END);
long size = ftell(fp);
fseek(fp, 0, SEEK_SET);

//The file read keeps adding ?? to the 2nd line of the file.  I've tried the two pieces of code below
//buff = malloc(size); 
buff = (char*) malloc(sizeof(char)*size);

fread(buff, 1, size, fp);

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

fclose(fp);     


return 0;
}

样品输出

[H [2Jbash-3.2 $ ./a.out

你好,这是一个句子v> äˇ

bash-3.2 $ q [退出退出

低技术
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>


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

FILE * fp;
char * buff;
int i = 0;


fp = fopen("text.txt", "a+");

if(fp == NULL)
{
    perror("exiting\n");
    exit(EXIT_FAILURE);
}

fseek(fp, 0, SEEK_END);
long size = ftell(fp);
fseek(fp, 0, SEEK_SET);

// lowtech: this is the fix of you problem
buff = (char*) malloc(sizeof(char)*size + 1);
memset(buff, '\0', sizeof(char)*size + 1);

fread(buff, 1, size, fp);

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

fclose(fp);     


return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

For循环在C中产生意外结果

for循环在C中产生意外结果

比较if条件产生意外错误的两个字符串C#

在C#中检查VB.NET对象是否为null会产生意外的编译错误

C#中的时间跨度产生意外结果

如何调试产生意外输出的 C 程序?

从Qt C ++调用已编译的C库函数会产生意外行为

C ++:在基础对象列表中,派生内存在通过引用传递时会产生意外结果

在x64模式下从C ++ / CLI调用MASM PROC会产生意外的性能问题

将元素添加到字典中的列表会产生意外的结果 c#

在我的C ++链表实现中取消引用节点指针会产生意外结果

crc 将 C 代码转换为 Java 的四个字节产生意外结果

为什么我在C ++中使用链接程序进行哈希处理会产生意外的输出?

unity C# Vector3.Distance 产生意外结果

为什么C中的此函数会产生意外结果?

在 Unity C# 中一次使用多个关键输入会产生意外行为

C#System.Net.WebException:基础连接已关闭:发送时发生意外错误

C#HttpWebRequest基础连接已关闭:发送时发生意外错误

C#:底层连接已关闭,发送时发生意外错误

启动Internet Explorer时发生意外错误。IELaunchURL()返回800700C1

Bash脚本和大文件(错误):使用重定向内置的读取内容输入会产生意外结果

在React 16.2中产生意外令牌错误的片段

dplyr::left_join() 产生意外错误

Numpy切片多维错误产生意外结果

Passport和Auth :: logout()产生意外错误

复合键上的休眠SELECT产生意外的char错误

replace()产生意外结果

HttpClient.GetStringAsync(url)抛出“基础连接已关闭:发送中发生意外错误。” Windows 8.1 C#

C ++中发生意外的编译错误:将默认值传递给函数参数