为什么当我执行sprintf(响应,“%s:%d\n”,查询,结果)
时,我的输出看起来是这样的:
16 easeFrequency HIV 1-1-2003 1-1-2005 Greece
/diseaseFrequency HIV 1-1-2003 1-1-2005 Greece 16
16 easeFrequency HIV 1-1-2003 1-1-2005 Greece
如果我将格式更改为sprintf(response,“%d:%n\n”,query,result)
,并在txt文件中的每个查询末尾添加1个空格,则输出变为:
16 /diseaseFrequency HIV 1-1-2003 1-1-2005 Greece
16 /diseaseFrequency HIV 1-1-2003 1-1-2005 Greece
16 /diseaseFrequency HIV 1-1-2003 1-1-2005 Greece
16 /diseaseFrequency HIV 1-1-2003 1-1-2005 Greece
16 /diseaseFrequency HIV 1-1-2003 1-1-2005 Greece
提示:来自TXT的查询为红色。 每个查询都用新行分隔。
query_txt.示例:
/diseaseFrequency HIV 1-1-2003 1-1-2005 Greece
/diseaseFrequency HIV 1-1-2003 1-1-2005 Greece
/diseaseFrequency HIV 1-1-2003 1-1-2005 Greece
/diseaseFrequency HIV 1-1-2003 1-1-2005 Greece
/diseaseFrequency HIV 1-1-2003 1-1-2005 Greece
我这样读取txt文件:
while(fgets(buffer,MAX_MESSAGE,fp)){
command = strtok(buffer,"\n");
queries[i] = malloc(MAX_MESSAGE*sizeof(char));
memset(queries[i],0,MAX_MESSAGE);
memcpy(queries[i++],command,strlen(command));
line_temp++;
}
我是这样读txt的。
while(fgets(buffer,MAX_MESSAGE,fp)){
command = strtok(buffer,"\n");
queries[i] = malloc(MAX_MESSAGE*sizeof(char));
memset(queries[i],0,MAX_MESSAGE);
memcpy(queries[i++],command,strlen(command));
line_temp++;
}
结果只是一个字符串数字,每次查询响应到来时,我都会
result+=atoi(query_answer)
编辑:在strtok中使用\r\n可以解决这个问题。 如果有人能向我解释为什么这能解决这个问题,我会解释的