C程序fopen()不会打开文件

时间:2015-04-07 19:38:21

标签: c fopen

据我所知,有这样的成千上万的问题,但我还没有找到解决问题的方法。这是代码:

#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");或指定绝对路径,我始终得到“无法找到源文件”。 请帮忙!

3 个答案:

答案 0 :(得分:4)

读写模式的模式字符串为"r""w",而不是"R""W"。使用无效模式可能导致fopen失败。

答案 1 :(得分:3)

int main()
{
FILE *inputFile=fopen("I:\\Test\main.cpp","R"); <-- This results in the string "I:\Testain.cpp"
  ...

确保使用两个&#34; \&#34;符号(逃避反斜杠),并使用小写&#34; w&#34;和&#34; r&#34;:

FILE *inputFile=fopen("I:\\Test\\main.cpp","r");

答案 2 :(得分:0)

如上所述,你必须&#34;逃避&#34;一个双击的反斜杠。您应始终检查fopen()的返回值,然后您可以根据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)时,我不知道为什么。