C 程序 fopen() 不打开文件
C program fopen() does not open a file
我明白,像这样的问题有成千上万,但我还没有找到解决问题的办法。这是代码:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
FILE *inputFile=fopen("I:\Test\main.cpp","R");
FILE *outFile=fopen("I:\Test\main2.cpp", "W");
if (inputFile==NULL) {
printf("Unable to locate source file");
_getch();
return 1;
}
int c;
int inSingleLine=0;
int inMultiLine=0;
int d=fgetc(inputFile);
while(c=fgetc(inputFile)!=EOF){
if (d==EOF) break;
if((c=='/') && (d=='*')) inMultiLine=1;
if ((c='*') && (d=='/')) inMultiLine=0;
if((c=='/')&& (d=='/')) inSingleLine=1;
if (c='\n') inSingleLine=0;
if (!inSingleLine && !inMultiLine) {
putc(c,outFile);
}
d=getc(inputFile);
}
// This is a test string
fclose(inputFile);
fclose(outFile);
/* And this is not a test
Actually not
*/
return 0;
}
不管我做什么,是把main.cpp和exe文件放在同一个文件夹里,FILE *inputFile=fopen("main.cpp","R");
还是指定绝对路径,我都得到"Unable to locate source file"时间。
请帮忙!
读写模式的模式字符串是"r"
和"w"
,而不是"R"
和"W"
。使用无效模式可能是导致 fopen
失败的原因。
int main()
{
FILE *inputFile=fopen("I:\Test\main.cpp","R"); <-- This results in the string "I:\Testain.cpp"
...
确保使用两个“\”符号(转义两个反斜杠),并使用小写 "w" 和 "r":
FILE *inputFile=fopen("I:\Test\main.cpp","r");
同上,您必须 "escape" 双反斜杠。你应该总是检查来自fopen()
的return值,然后你可以获得基于errno
的消息。当我尝试使用小写字母 "r"
执行以下操作时,我收到有关无效转义序列 \m
的编译器警告,但程序运行良好。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *inputFile=fopen("I:\Test\main.cpp","r");
printf("After trying to open\n");
if (inputFile == NULL)
printf ("%s\n", strerror(errno));
else
fclose(inputFile);
return 0;
}
我得到了:
After trying to open
No such file or directory
但是当我用大写 "R"
尝试时,程序挂起 (MSVC),我不知道为什么。
我明白,像这样的问题有成千上万,但我还没有找到解决问题的办法。这是代码:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
FILE *inputFile=fopen("I:\Test\main.cpp","R");
FILE *outFile=fopen("I:\Test\main2.cpp", "W");
if (inputFile==NULL) {
printf("Unable to locate source file");
_getch();
return 1;
}
int c;
int inSingleLine=0;
int inMultiLine=0;
int d=fgetc(inputFile);
while(c=fgetc(inputFile)!=EOF){
if (d==EOF) break;
if((c=='/') && (d=='*')) inMultiLine=1;
if ((c='*') && (d=='/')) inMultiLine=0;
if((c=='/')&& (d=='/')) inSingleLine=1;
if (c='\n') inSingleLine=0;
if (!inSingleLine && !inMultiLine) {
putc(c,outFile);
}
d=getc(inputFile);
}
// This is a test string
fclose(inputFile);
fclose(outFile);
/* And this is not a test
Actually not
*/
return 0;
}
不管我做什么,是把main.cpp和exe文件放在同一个文件夹里,FILE *inputFile=fopen("main.cpp","R");
还是指定绝对路径,我都得到"Unable to locate source file"时间。
请帮忙!
读写模式的模式字符串是"r"
和"w"
,而不是"R"
和"W"
。使用无效模式可能是导致 fopen
失败的原因。
int main()
{
FILE *inputFile=fopen("I:\Test\main.cpp","R"); <-- This results in the string "I:\Testain.cpp"
...
确保使用两个“\”符号(转义两个反斜杠),并使用小写 "w" 和 "r":
FILE *inputFile=fopen("I:\Test\main.cpp","r");
同上,您必须 "escape" 双反斜杠。你应该总是检查来自fopen()
的return值,然后你可以获得基于errno
的消息。当我尝试使用小写字母 "r"
执行以下操作时,我收到有关无效转义序列 \m
的编译器警告,但程序运行良好。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *inputFile=fopen("I:\Test\main.cpp","r");
printf("After trying to open\n");
if (inputFile == NULL)
printf ("%s\n", strerror(errno));
else
fclose(inputFile);
return 0;
}
我得到了:
After trying to open
No such file or directory
但是当我用大写 "R"
尝试时,程序挂起 (MSVC),我不知道为什么。