私はトピックで自分自身を磨くためにCでエクササイズをしています。私はプログラムを使ってヘッダファイルを操作しようとしています。プログラムは "Segmentation fault"を返します。私はこの問題を以下のコードの部分に分けました。誰にでも私が正確に何が間違っているかを見るのを助けることができますか?文字列連結でこのセグメンテーションフォルトの原因は何ですか?
header=strtok(st,"\"");
header=strtok(NULL,"\"");
f=fopen(header,"r");
if(f)
{
while((ch=fgetc(f))!=EOF)
fputc(ch,f2);
fclose(f);
}
else
{
header2=(char *)malloc(strlen("/usr/include")+strlen(header));
header2=strcat("/usr/include/",header);
f=fopen(header2,"r");
printf("%s\n",header2);
while((ch=fgetc(f))!=EOF)
fputc(ch,f2);
fclose(f);
}
この問題は、/ usr/include/locationにアクセスしようとしているときにのみ発生することに注意してください。何らかの認証の問題?もしそうなら、それをどうやってやりますか?前もって感謝します。 :)あなたが先としてstring literalを供給しているよう
あなたはこれを行うことはできません: 'HEADER2 = strcatは( "は/ usr /含める/"、ヘッダ);'。最初のパラメータは宛先バッファでなければなりません。 –
'strtok'から結果' header'をチェックしてから使用してください。 –
他のすべての問題が修正された後、2番目の 'fopen'から戻り値をチェックする必要があります。 – user3386109