从C中的空格分隔的文件中读取两个字符串

时间:2012-10-30 08:47:53

标签: c gcc readfile

我有以下代码:

#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 var。代码按原样打印出我文件中的2个值(在不同的行上),但这是错误的,因为它应该只打印1。

一旦我尝试打印password,程序就会退出,没有错误(甚至没有分段错误)。我做错了吗?

注意:我需要这个来保持C,而不是C ++(cout部分除外,因为我很懒。)

1 个答案:

答案 0 :(得分: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];