gpt4 book ai didi

c - 初学者在 C 中使用 fopen 命令的困难

转载 作者:太空宇宙 更新时间:2023-11-04 05:08:10 26 4
gpt4 key购买 nike

我正在学习 http://www.cprogramming.com/tutorial/c/lesson10.html 上的 C 编程教程.这个特别的教程讲授 C 中的文件 I/O;特别是讨论了 fopen 命令。有一次,他们给出了以下示例(我认为应该打印文件 test.txt 的内容):

FILE *fp;
fp=fopen("c:\\test.txt", "w");
fprintf(fp, "Testing...\n");

因此,我创建了一个名为 test.txt 的文本文件并将其保存在我当前的工作目录 (C:\cygwin\home\Andrew\cprogramming) 中。然后我在同一目录中创建了一个 c 文件,它包含以下代码:

#include <stdio.h>

int main()
{
FILE *fp;
fp=open("test.txt","w");
fprintf(fp,"Testing...\n");
}

当我使用 gcc 编译这个 c 文件(我称之为 helloworld2.c)时,我得到以下消息:

helloworld2.c: In function `main':
helloworld2.c:40: warning: assignment makes pointer from integer without a cast

然后当我尝试运行可执行文件时,我得到:

Segmentation fault (core dumped)

您对我接下来应该尝试什么有什么想法吗?

非常感谢您的宝贵时间。

最佳答案

这是因为您使用的是 open 而不是 fopenOpen 来自 POSIX 标准并返回一个(整数)句柄; fopen 返回FILE 结构的内存地址。您不能以可互换的方式使用两者。就目前而言,您的代码将接收到的整数(可能是 4)隐式转换为 FILE* 指针,使其指向内存地址 4。当 fprintf 时,这会使您的程序出现段错误尝试访问它。

fopen 是跨平台的,但是 open 是 POSIX-only。您现在可能想坚持使用 fopen

关于c - 初学者在 C 中使用 fopen 命令的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6318272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com