我有以下代码:
#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
部分除外,因为我很懒。)
答案 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];