このようなテキストファイルがあります
ユーザー1|パスワード
1 ユーザー2|パスワード2
「user1 | password1」などの文字列があります。テキスト ファイルの各行をこの文字列と比較する必要があります。
FILE *fp;
fp = fopen("user_info_file.txt", "r");
while(fgets(str, 10, fp)!=NULL){
n = write(newsockfd, "STR:", 4);
n = write(newsockfd, str, 15);}
そして、strcmp に進みます。サーバーにこれをクライアントに書き込ませるため、書き込み関数を使用します。
テキストが読み取られているかどうかを確認するために、ランダムな値として 15 を入力しました (範囲内です)。しかし、str を出力すると、str には何も含まれていません。「STR:」と表示されるだけで、次の行にプロンプトが表示されます。
user_info_file.txt のデータ(少なくとも1行目)をstrに読み込む方法を教えてください。私はこれに何時間も費やしましたが、私はそれを得ることができないようです. 初心者ですが、ご容赦ください。
編集: 基本的に私は IM アプリケーションを作成しています。ユーザーはユーザー名とパスワードを入力して登録します。これはサーバーに送信され、サーバーはそれを上記の形式で user_info_file に保存します。ユーザーが登録したら、ログインできる必要があります。彼らはユーザー名とパスワードを入力し、これもサーバーに送信します。次に、サーバーがこの文字列を user_info_file の既存のエントリと比較して、ログインを検証する必要があります。したがって、サーバーが user_info_file のすべての行をチェックし、それをユーザーが入力したものと比較する必要があります。
ので、私は持っています
char* str = new char[256];
FILE *fp;
fp = fopen("user_info_file.txt", "r");
while(fgets(str, 10, fp)!=NULL){
n = write(newsockfd, "STR:", 4);
n = write(newsockfd, str, 15);}
if(strcmp(buffer, str) == 0)
n = write(newsockfd, "Logged in", 9);
else
n = write(newsockfd, "No such username", 16);
基本的に、user_info_file の各行を str に読み込もうとしています。次に、読み取り行ごとに str をバッファと比較します。バッファには、クライアントが送信したログイン情報が格納されます。それらが一致する場合、ログインは成功するはずです。
しかし、str を書いても、何も出力されません。15 は str から書き込む文字数ですよね?したがって、数値がたとえば 5 だったとしても、少なくとも「user1」または「user2」、または user_info_file の SOME 行の最初の 5 文字を出力する必要があります。しかし、ファイルから str に何かが読み取られているようには見えません。
私はそれを明確にしたことを願っています。私に何ができる?私は機知に富んでいます。