2017-11-03 10 views
0

Hello StackOverflowユーザは、クライアントからファイルを取得するためにサーバソケットデータをバッファに読み込む際にいくつか問題があります。私はそれが私がそうでないと呼ばれる方法だと信じているファイル全体を呼び出す前に文字列全体が変数に書き込まれていると思う! perrorはそのようなファイルやディレクトリを返しません! ... Cプログラミングへといくつかのものとの非常にリテラルを実現Cプログラミング、サーバソケットでエラーが発生しました。クライアントからファイルが呼び出されました。

IM非常に新しい

だから、誰かが私がクライアントにソケットを経由してファイル名を送信する方法を見つけ出す手助けができれば私は何を求めていることで、クライアントが私にファイルを取得させてもらう!

私はC言語の新人であり、私はこのプログラムを約3日間行っていて、コード全体をやり直したくないという単純な修正ができたら... ....ありがとうございましたどんな助けでも!私は問題を抱えているコードの部分をheres!私は、これは「R」とあなた

+0

これがどのように機能するのか説明できますか?ファイル名の末尾に改行文字がマークされていますか?それとも別の方法でマークされていますか? *正確に*は 'バッファ'ですか?それはポインタですか?アレイ? –

答えて

1

ファイルが指定されたパスに存在することを期待します。

バッファに開封したいファイルが正確に含まれていることを確認してください。 そのファイルは、実行可能ファイルに対して相対パスで存在します。それは、このような末尾のスペースを特定するお手伝い変数を印刷しながら

FILE *dl = fopen(buffer, "r"); 

ヒントはほとんどの場合、引用符を使用しています。

printf("this is buffer : '%s' ", buffer); 
+0

これは間違いなく働いた!私はファイル名を送信しようとしていたときに改行が挿入されていたのですが、エラーファイルが見つからなかった理由は何ですか?(DUH)そしていつも何か簡単な感謝Thiru Shetty Youveは私に多くのトラブルを救った!! –

0

fopenのは、読み取り専用モードでこれをファイルを開くことができます願っていますあなたは

if (fgets(dataRead, sizeof(buffer), fp) !=NULL){ 
        strtok(buffer, "\n"); //this removes the newline 
        fputs(buffer, stdout); 
        perror("fputs"); 

以下のように「バッファ」から改行を削除する必要が

   if (fgets(dataRead, sizeof(buffer), fp) !=NULL){ 
        fputs(buffer, stdout); 
        perror("fputs"); 

        perror("fgets"); 
        printf("this is buffer : %s", buffer); 




       FILE *dl = fopen(buffer, "r"); //THIS IS THE BUG! 
       perror("dl"); 



       if (dl == NULL){ 
        printf("failed to open file"); 

       }else{ 

        while ((c = fgetc(dl)) !=EOF){ 

         fprintf(fp,"%c",c); 
         perror("fprintf"); 
         fflush(fp); 
        } 
        } 
関連する問題