Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C fopen()返回NULL,文件存在于当前目录中_C_Fopen - Fatal编程技术网

C fopen()返回NULL,文件存在于当前目录中

C fopen()返回NULL,文件存在于当前目录中,c,fopen,C,Fopen,我不能理解这一点-我的工作目录中有一个文件input1.txt,但我不能fopen()它 我的目录结构(Xcode): main(): nextWord(): char*nextWord(文件*FILE) { int maxLength=16; 整数长度=0; char*word=malloc(sizeof(char)*maxLength); 而(1) { char c=fgetc(文件); 如果在Xcode中((c>='0'&&c='A'&&c='A'&&c),您的项目“文件夹”最好称为“组

我不能理解这一点-我的工作目录中有一个文件
input1.txt
,但我不能
fopen()

我的目录结构(Xcode):

main():

nextWord():

char*nextWord(文件*FILE)
{
int maxLength=16;
整数长度=0;
char*word=malloc(sizeof(char)*maxLength);
而(1)
{
char c=fgetc(文件);
如果在Xcode中((c>='0'&&c='A'&&c='A'&&c),您的项目“文件夹”最好称为“组”,它可能指磁盘上的实际文件夹,也可能不指磁盘上的实际文件夹。组目录层次结构存储在项目设置中,不一定对应于文件系统层次结构(请考虑符号链接)。尝试右键单击其中一个有问题的文件,然后选择“在查找器中显示”以查看其在磁盘上的实际位置

如果input1.txt实际上与调用函数文件不在磁盘上的同一目录中,请尝试通过Finder将其移动,并通过Xcode(文件->将文件添加到…)将其重新添加到项目中

编辑:我刚刚找到一个工具来同步您的组和文件结构。

在Xcode中,您的项目“文件夹”最好称为“组”,它可能指磁盘上的实际文件夹,也可能不指磁盘上的实际文件夹。组目录层次结构存储在您的项目设置中,不一定对应于您的文件系统层次结构(想想符号链接)。尝试右键单击其中一个有问题的文件,然后选择“在Finder中显示”以查看其在磁盘上的实际位置

如果input1.txt实际上与调用函数文件不在磁盘上的同一目录中,请尝试通过Finder将其移动,并通过Xcode(文件->将文件添加到…)将其重新添加到项目中


编辑:我刚刚找到一个工具来同步您的组和文件结构。

IDE中的“当前”目录可能并不总是您所认为的那样。请检查项目设置以查看“当前”目录是什么目录设置为。另外,请编辑您的问题以告诉我们您使用的是什么IDE。当然,您可以始终在程序中打印出来以查看它是什么。您必须解决一件事,即检查
fopen()
调用成功,这很好,但您继续尝试从中读取,这看起来不正确吗?提供完整路径并尝试打开文件或执行系统(pwd)获取工作目录。我正在使用Xcode-打印工作目录时显示:
/Users/tomeldridge/Desktop/assignment6/build/Debug
检查您的文件input1.txt是否复制到调试目录!如果没有,您已发现错误。“当前”IDE中的目录可能并不总是您认为的那样。请检查项目设置以查看“当前”目录设置为什么。另外,请编辑您的问题以告诉我们您使用的IDE。当然,您可以始终在程序中打印出来以查看它是什么。您必须解决的一件事是,检查
fopen()
调用成功,这很好,但您继续尝试从中读取,这看起来不正确吗?提供完整路径并尝试打开文件或执行系统(pwd)获取工作目录。我正在使用Xcode-打印工作目录时显示:
/Users/tomeldridge/Desktop/assignment6/build/Debug
检查文件input1.txt是否复制到调试目录!如果没有,则发现错误。
const char* fileName = "input1.txt";
if (argc > 1)
{
    fileName = argv[1];
}
printf("Opening file: %s\n", fileName);

clock_t timer = clock();

HashMap* map = hashMapNew(10);

// --- Concordance code begins here ---
// Be sure to free the word after you are done with it here.
FILE *in;
if ( (in = fopen(fileName, "r") ) == NULL ) {
    printf ("Can’t open %s for reading. %s\n", fileName, strerror(errno));
}
char* w = nextWord(in);
printf("%s",w);
char* nextWord(FILE* file)
{
    int maxLength = 16;
    int length = 0;
    char* word = malloc(sizeof(char) * maxLength);
    while (1)
    {
        char c = fgetc(file);
        if ((c >= '0' && c <= '9') ||
            (c >= 'A' && c <= 'Z') ||
            (c >= 'a' && c <= 'z') ||
            c == '\'')
        {
            if (length + 1 >= maxLength)
            {
                maxLength *= 2;
                word = realloc(word, maxLength);
            }
            word[length] = c;
            length++;
        }
        else if (length > 0 || c == EOF)
        {
            break;
        }
    }
    if (length == 0)
    {
        free(word);
        return NULL;
    }
    word[length] = '\0';
    return word;
}