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);
}
出力: 現在のディレクトリ: (null) セグメンテーション違反