C.无法在Windows Vista上使用fopen打开文本文件

时间:2016-12-10 10:25:19

标签: c fopen windows-vista

我想学习如何在C中使用getc函数,所以我编写了一个小程序,它应该将文本文件的第一个字母作为输出。 这是它的外观:

int main()
{
    int character;
    FILE *file;
    file = fopen("file.txt", "r");
    if(file == NULL)
        printf("can't open\n");
    character = getc(file);
    printf("%c", character);
    fclose(file);
    return 0;
}

无法打开file.txt文件,我无法弄清楚原因。 file.txt与我的程序的.exe文件位于同一文件夹中。我使用的是Windows Vista。 提前致谢

2 个答案:

答案 0 :(得分:1)

这会从argv[0]

中提取程序的位置
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MYFILE "plik.txt"

int main(int argc, char *argv[]) {
    char fname[_MAX_PATH+1];
    int znak;
    FILE *plik;
    char *ptr;
    strcpy(fname, argv[0]);
    ptr = strrchr(fname, '\\');
    if(ptr == NULL) {
        strcpy(fname, MYFILE);
    }
    else {
        strcpy(ptr+1, MYFILE);
    }
    plik = fopen(fname, "r");
    if(plik == NULL) {
        printf("Can't open %s\n", fname);
    }
    else {
        znak = getc(plik);
        printf("First char of %s is %c\n", fname, znak);
        fclose(plik);
    }
    getchar();
    return 0;
}

答案 1 :(得分:1)

尝试

if (plik == NULL) { perror("plik.txt"); exit(EXIT_FAILURE); }

以便更好地了解错误原因。