显然,没有关于我的问题的数据(我试着在这里搜索一下,但我读过的所有帖子都没有回答我的疑问)。这是:我正在拼命想弄清楚如何将正确的路径放入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.很抱歉,如果已发布类似的问题,我也无法找到它。
答案 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);
}