初歩的な質問になってしまいます。
ファイルのパスを指定してfopenをしたいのですが、うまくいかなかったので質問させていただきます。
OSはLinuxです。
まず
buf[]="GET text.txt";
という文字列から
strcpy(filename,buf+4);
でファイル名を抽出し、filename配列にファイル名を格納します。
次に
sprintf(path,"/home/user/%s",filename);
でpath配列に"/home/user/text.txt"を格納します。
そして最後に
fopen(path,"r");
で指定されたパスからファイルを開く、としてみました。
しかし、実行してみるとファイルがないとなってしまいます。
pathの中身を出力させたところ、パスの文字列がしっかりと入っていましたし
ファイルもしっかりと存在します。
私のやりかたでおかしな点があればご指摘頂けると嬉しいです。
乱文失礼致しました。
<追記>
以下ソースコードを掲示します。
lang
1#include <stdio.h> 2#include <string.h> 3#include <errno.h> 4 5int main() 6{ 7 FILE* fp; 8 char filename[256]; 9 char path[256]; 10 char buf[256]; 11 fgets(buf,256,stdin); 12 strcpy(filename,buf+4); 13 sprintf(path,"/home/user/%s",filename); 14 printf("path=[%s]\n", path); 15 16 fp = fopen( path, "r" ); 17 if( fp == NULL ) 18 { 19 fprintf(stderr, "file [%s] open error: %s\n", path, strerror(errno)); 20 return -1; 21 } 22 23 fclose(fp); 24 25 return 0; 26} 27
argius様から頂いたコードにfgetsを加えたものです。
fgets関数でユーザは"GET text.txt"と入力すると
/home/user/text.txt
のファイルを開くというプログラムを作りたいのですが、うまくいきませんでした。
クライアントが指定したファイルをサーバが開いて読み込む、というプログラムを作ってみたいと思い、今回質問させていただきました。
サーバ側のソースコードは長く、分かりにくいので、
うまくいかない部分を抜粋してソースコードを掲示してあります。

回答1件
あなたの回答
tips
プレビュー