我必须失去了一些东西很简单,但我没有线索。运行之后:
int main() {
char requete[] = {"205 7.3 data data\n"};
char codeUserReq[9];
char choixReq[3];
char donneeReq[200];
memset(codeUserReq, 0, 5);
memset(choixReq, 0, 3);
memset(donneeReq, 0, 200);
sscanf(requete, "%s %s %[^\n]", codeUserReq, choixReq, donneeReq);
printf("codeuser %s \n",codeUserReq);
printf("choix %s \n",choixReq);
printf("donnee %s \n",donneeReq);
我希望得到的结果是:
codeuser 205
choix 7.3
donnee data data
相反,它是:
codeuser
choix 7.3
donnee data data
在Ubuntu此代码的工作,但不能在debian的。
第一个字符串无法正确读取。
通过编写“7.3”它(因为这是choixReq
,4个字符)溢出'7', '.', '3', '\0'
。
如果我改变choixReq
持有4个字符,而不是,我得到正确的输出:
codeuser 205
choix 7.3
donnee data data