在C中读取具有不同扩展名的.txt文件

时间:2011-04-04 19:48:16

标签: c file text

目前我的程序在.txt文件中读取没有问题,但我的程序需要读取具有不同文件扩展名的文本文件(需要.emu)。当简单地将同一文件的扩展名更改为.emu时,变量'file'为NULL,因此文件未打开,任何人都可以帮忙吗?

有点环顾四周,无法找到解决方案,所以非常感谢任何帮助

这是源代码:

void handleArgs (const char *filename, int trace, int before, int after) {
FILE *file = fopen(filename, "r");
char *address = malloc(MAX_ADD_LENGTH * sizeof(char));
char *instruction = malloc(MAX_INS_LENGTH * sizeof(char));
long int addressDecoded;

if (file == NULL || file == 0) {
    fprintf(stderr, "Error: Could not open file");
}
else {
    if (ferror(file) == 0) {
        while (fscanf(file, "%s %s", address, instruction) != EOF) {
            if (strlen(address) == 8 && strlen(instruction) == 8) {
                addressDecoded = strtol(address, NULL, 16);
                printf("%ld\n", addressDecoded);
                //instruction = decodeInstruction(instruction);
            }
            else {
                fprintf(stderr, "Error: particular line is of wrong length");
            }

        }
    }
}

fclose(file);

}

执行时

参数'filename'只是'/foopath/test.emu'

2 个答案:

答案 0 :(得分:4)

关于文件扩展名,C没有什么特别之处。重读代码以获取简单的错误,例如在一个地方更改文件名,而不是另一个地方。如果您传入文件名,请传递整个名称,而不仅仅是句点左侧的部分。

答案 1 :(得分:1)

文件是数据,并且有名称。名称中点之前的内容与其后的内容一样 - 扩展名就像文件包含的内容一样创建,但是它们是不要求与文件内容严格相关

该文件可能不存在,或者您的权限可能不足以打开它。或许还有其他一些错误。你怎么诊断这个?

当您使用系统调用并且它的行为不符合您的要求时,errnoerrno.h)中有一个名为#include <errno.h>的变量,其中包含一个代表最后一次通话的状态。有一个巨大的符号常量列表,可以将名称添加到这些值中,您可以进行谷歌搜索。

例如,如果您尝试打开文件并且返回的指针无效,您可能需要检查errno以查看该文件是否存在,或者您是否超出打开文件的系统限制等