int get_input_multilan(char **olan)
{
int rtn = 0;
char str_lan[128];
printf("\n\nFor example:1 2 4 (selected segment1, segment2 and segment4).\n");
printf("Please select segment [{1-8}, {9}]:");
scanf("%[^\n]", str_lan);
*olan = xstrdup(str_lan);
return rtn;
}
请问各位,我想直接赋值一个整数给到 str_lan ,上面这段代码是可行的,但是我想直接给 str_lan 赋整数值,应该怎么写呢?
整数不行啊,你是char[]类型
建议这样
int get_input_multilan(char **olan)
{
int rtn = 0;
char str_lan1[128];
int str_lan;
printf("\n\nFor example:1 2 4 (selected segment1, segment2 and segment4).\n");
printf("Please select segment [{1-8}, {9}]:");
scanf("%[^\n]", str_lan1);
sscanf(str_lan1, "%d", &str_lan);
*olan = xstrdup(str_lan);
return rtn;
}
scanf("%s", str_lan);
你把整数字符串直接赋值给它就行了
将scanf语句修改为如下形式即可:
scanf("%d", &str_lan);
这样就可以将输入的整数赋值给str_lan了。同时,由于scanf函数会将输入缓存区中的换行符留在缓存区中,因此在下一次输入之前需要清空输入缓存区,可以使用如下语句:
while(getchar() != '\n');
str_lan是一个字符串的地址,不能直接将数值赋值给该地址的。