在fprintf函数中编写正确的路径

时间:2015-03-24 15:10:20

标签: c file printf filepath file-handling

显然,没有关于我的问题的数据(我试着在这里搜索一下,但我读过的所有帖子都没有回答我的疑问)。这是:我正在拼命想弄清楚如何将正确的路径放入fprintf函数并且我的尝试都没有成功。这是程序:

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

int main(){
FILE *fp = NULL;

//opening the file
fp = fopen("C:/Users/User1/Desktop/myfile.txt", "w+");

//if there's an error when opening the file, the program shuts down
if(fp == NULL){
    printf("error");
    exit(EXIT_FAILURE);
}

//print something on the file the program just opened (or created if not already existent)
fprintf(fp, "to C or not to C, that is the question");

//closing the file
fclose(fp);

//end of main function
return 0;
}

我的问题是:为什么我的程序总是关闭?我究竟做错了什么?它只是一个Windows问题(我看到,在User1文件夹图标上,有一个锁定,可能是一个权限被拒绝的东西?)或者我只是以错误的方式放置路径?我试图使用一个字符串来保存路径,我试图改变打开模式,我甚至试图禁用我在计算机上安装的所有防病毒软件,反恶意软件和防火墙,但没有,程序仍然没有创建文件我想要的地方。

P.S。抱歉英语不好。 P.P.S.很抱歉,如果已发布类似的问题,我也无法找到它。

2 个答案:

答案 0 :(得分:4)

fp = fopen("C:\Users\User1\Desktop\myfile.txt", "w+");

字符\是C中的转义字符。您必须将其转义:

fp = fopen("C:\\Users\\User1\\Desktop\\myfile.txt", "w+");

更好的是,Windows现在支持/目录分隔符。所以你可以写:

fp = fopen("C:/Users/User1/Desktop/myfile.txt", "w+");

无需逃离道路。

参考:

MSDN fopen,特别是 Remaks 部分

答案 1 :(得分:0)

使用perror()让操作系统帮助您确定失败原因。

#define FILENAME "C:/Users/User1/Desktop/myfile.txt"

    fp = fopen(FILENAME, "w+");

    // report and shut down on error
    if (fp == NULL) {
        perror(FILENAME);
        exit(EXIT_FAILURE);
    }