1

私は次のコードを持っています:

#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
    char* username, *password;
    cout<<"Content-type: text/html"<<endl<<endl;
    FILE *in = fopen("useri.txt","r");
    while (fscanf(in,"%s %s",username, password) != EOF) {
        cout<<username<<endl;
    }
    fclose(in);
}

ファイルは次のようになります。

admin admin

何らかの理由で、特定のファイル内のすべてのテキストが変数に読み込まれていますusername。コードはそのままで、ファイルにある2つの値の両方を(別々の行に)出力しますが、それは間違っています。1つしか出力されないためです。

印刷しようとするとすぐpasswordに、プログラムはエラーなしで終了します(セグメンテーション違反もありません)。私は何か間違ったことをしていますか?

cout:C ++ではなくCを維持するためにこれが必要です(私は怠惰なので、一部を除いて)。

4

1 に答える 1

3

メモリは変数に割り当てられていません。

char* username, *password;

malloc()メモリを動的に割り当てるために使用します。

動的メモリのみを使用する必要はありません。静的メモリも使用できます。すなわち

//100 is just a sample value. 
//Modify as per your requirement.
#define MAX_STR_LEN 100    

char  username[MAX_STR_LEN], password[MAX_STR_LEN];
于 2012-10-30T08:49:42.733 に答える