文件写入时出现分段错误

时间:2013-11-07 01:18:02

标签: c printf

当我尝试打印到文件时,会出现分段错误。如何打印日期和时间进行归档?

#include <time.h>
#include <stdio.h>

main()
{
    FILE *fp;
    time_t mytime;

    mytime=time(NULL);
    fp=("sys.txt","w+");

    fprintf(fp,"%s",ctime(&mytime));
    fclose(fp);
    return 0;
}

3 个答案:

答案 0 :(得分:0)

你忘了(a)打电话给fopen()和(b)注意编译器的警告。如果您没有收到编译器警告,请打开它们或获得更好的编译器。

答案 1 :(得分:0)

当程序试图访问其不拥有或具有访问权限的内存时,通常会发生分段错误。

程序中出现此问题,因为您错误地尝试打开文件。您必须使用fopen()调用来打开文件:

FILE *fopen(const char *path, const char *mode);

在当前状态下,程序尝试将字符串写入由包含某个随机值的文件描述符描述的文件。也就是说,它试图写入一个可能不存在的随机文件,并且它肯定没有写入权限。

如果您使用gcc编译代码,您会看到这会通知您潜在的问题:

warning: assignment from incompatible pointer type

答案 2 :(得分:0)

fp=("sys.txt","w+");替换为fp=fopen("sys.txt","w+");

阅读File Operations in C