Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sscanf字符串拆分不工作_C_String_Split_Scanf - Fatal编程技术网

sscanf字符串拆分不工作

sscanf字符串拆分不工作,c,string,split,scanf,C,String,Split,Scanf,有人能解释一下为什么在下面的代码中没有拆分字符串吗 #include <stdio.h> int main(void) { char name[] = "first:last"; char first[20], last[20]; sscanf(name, "%s:%s", first, last); printf("first: %s, last: %s", first, last); return 0; } #包括 内部主(空)

有人能解释一下为什么在下面的代码中没有拆分字符串吗

#include <stdio.h>

int main(void)
{
    char name[] = "first:last";
    char first[20], last[20];

    sscanf(name, "%s:%s", first, last);

    printf("first: %s, last: %s", first, last);

    return 0;
}
#包括
内部主(空)
{
字符名称[]=“第一个:最后一个”;
第一个字符[20],最后一个字符[20];
sscanf(名称,“%s:%s”,第一个,最后一个);
printf(“第一个:%s,最后一个:%s”,第一个,最后一个);
返回0;
}
输出是

第一:第一:最后,最后:

但应该是这样

第一:第一,最后:最后

请检查此处的代码

参见关于
%s
类型说明符:

字符串。这将读取后续字符,直到 找到空白(空白字符被视为空白, 换行符和制表符)


您可以使用以下内容:

sscanf(name, "%[^:]:%s", first, last);

<代码>:<代码>不是空白,所以常规<代码> %s>代码>不会认为它是定界符。有关更多详细信息,请参阅


(已编辑的演示:)

如果您测试了
sscanf()
中的返回值,它会告诉您它只进行了一次转换,而不是您预期的两次,这会给您一个强烈的提示,即您的预期中存在一些错误。经常检查错误…特别是当你被某事难住的时候。