Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打开文件的简单C程序_C_Fopen - Fatal编程技术网

打开文件的简单C程序

打开文件的简单C程序,c,fopen,C,Fopen,我正在尝试制作一个程序来打开一个名为“write.txt”的文件 #包括 main(){ 文件*fp; fp=fopen(“write.txt”,“w”); 返回0; } 这样行吗?因为它什么也不返回。你期望它“返回”什么?它打开一个文件,在大多数平台上,如果它不存在,就会创建一个文件 您可能应该在最后关闭(fp)文件。除了main的旧变体之外,该代码实际上没有太多错误。除非出现错误,否则它应该创建该文件 但是,由于您没有检查来自fopen的返回值,因此可能会出现某种类型的错误,您对此一无所知

我正在尝试制作一个程序来打开一个名为“write.txt”的文件

#包括
main(){
文件*fp;
fp=fopen(“write.txt”,“w”);
返回0;
}

这样行吗?因为它什么也不返回。

你期望它“返回”什么?它打开一个文件,在大多数平台上,如果它不存在,就会创建一个文件


您可能应该在最后关闭(fp)文件。

除了
main
的旧变体之外,该代码实际上没有太多错误。除非出现错误,否则它应该创建该文件

但是,由于您没有检查来自
fopen
的返回值,因此可能会出现某种类型的错误,您对此一无所知

首先,我要说:

#include <stdio.h>
#include <errno.h>
int main (void) {
    FILE *fp;
    fp = fopen ("write.txt","w");
    if (fp == NULL) {
        printf ("File not created okay, errno = %d\n", errno);
        return 1;
    }
    //fprintf (fp, "Hello, there.\n"); // if you want something in the file.
    fclose (fp);
    printf ("File created okay\n");
    return 0;
}

输入代码以查看其运行位置。如果指定相对路径行“write.txt”,则将在此处创建文件。否则,您可以指定一个绝对路径,以确保它尝试在文件系统中的特定点创建它。

我认为在开始使用文件之前,您应该学习一些C语言的基础知识。返回意味着一些数据从被调用函数传递回调用代码。在这种情况下,在程序末尾返回0。您没有对文件指针执行任何操作,只是创建了一个新文件…

我想您想打印FILE write.txt的内容。(假设它包含字符)

#包括
int main()
{             
文件*fp,字符ch;
fp=fopen(“write.txt”、“r”);
如果(fp==NULL)
{
printf(“打开文件时出现问题”);
出口(0);
} 
其他的
{ 
而((ch=fgetc(fp))!=EOF)
{
printf(“%c”,ch);
}
}
fclose(fp);
返回0;
}

它不返回任何内容,因为您有一个
返回0作为最后一条语句?或者您的意思是
fopen()
正在返回零?您希望它返回什么?您所说的退货、打印是什么意思?对不起,我的意思是fopen不退货。它不能“不退货”。在你的情况下,它到底返回了什么?对不起。我把我的话弄错了。我的意思是没有创建或打开文件。我相信在旧版本的C语言中,没有返回类型的函数被假定为返回
int
。这对于C++来说是不正确的;主函数需要返回一个
int
。我想从C99开始,您会发现应该显式返回一个int。C89/90允许默认值。最好关闭打开的文件;在退出时可以将继承的文件(如标准输入和标准输出)保持打开状态而不是
printf()
,因为它应该打印用户可读的错误,而不是难以理解的错误号。是的,我衷心同意,您最好这样做。它也与问题本身无关:-)将其视为支持代码。我知道。我把问题弄糟了。但我的意思是没有打开/创建任何文件。我试着学习K&R p160-161。K&R是学习C的一个可怕的工具,你最好用一些更现代的东西。文件是为写作而打开的,而不是为阅读而打开的。此外,您的printf不包含errno,因此您不知道打开失败的原因。使用strerror或perror。
#include <stdio.h>
#include <errno.h>
int main (void) {
    FILE *fp;
    fp = fopen ("write.txt","w");
    if (fp == NULL) {
        printf ("File not created okay, errno = %d\n", errno);
        return 1;
    }
    //fprintf (fp, "Hello, there.\n"); // if you want something in the file.
    fclose (fp);
    printf ("File created okay\n");
    return 0;
}
system ("cd"); // for Windows
system ("pwd") // for UNIXy systems
#include <stdio.h>

int main()
{             

    FILE *fp,char ch;

    fp=fopen("write.txt","r");

    if(fp==NULL)
    {
        printf("Some problem in opening the file");
        exit(0);
    } 
    else
    { 
        while((ch=fgetc(fp))!=EOF)
        {
            printf("%c",ch);
        }
    }

    fclose(fp);

    return 0;  
}