gpt4 book ai didi

c - 创建新指针后 getcwd() 返回 NULL

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:28 24 4
gpt4 key购买 nike

刚开始学习linux和C,请不要苛求我。

我正在尝试查找当前工作目录并打开此目录中的文件以查找特定单词。如果我只找到 cwd,它会给出正确的 cwd,但是当我添加 while 循环时,cwd 为 null。

#include <unistd.h>
#include <stdio.h>
#include <limits.h>
main(){
char *buff;
char *currentDir =getcwd(buff,PATH_MAX);

printf("Current directory: %s\n",currentDir);

FILE *file;
char *filename = "profile";
file = fopen(filename,"r");
if(file == NULL)
{
fprintf(stderr,"File %s wasn't found\n",filename);
}

while(1)
{
char buffer[80];
char *token;
fgets(buffer,80,file);
if(feof(file))
{break;}
else{
*token = strtok(buffer,"=");
if(strcmp(token,"HOME")==1);
{
printf("HOME token is found");
}
}
free(token);
}

fclose(file);
}

输出:当前目录:(空)段错误

最佳答案

buff 指向随机内存。

你可能喜欢这样声明buff:

char buff[PATH_MAX] = "";

如果在 Linux 上,那么可以选择让 getcwd() 分配所需的内存:

char * currentDir = getcwd(NULL, 0);

currentDir 需要在完成后传递给 free(),然后不需要 buff

关于c - 创建新指针后 getcwd() 返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13047366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com