给字符型数组直接赋值

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是一个字符串的地址,不能直接将数值赋值给该地址的。