我有一个字符串要读取,它是AaaaBbbb
,我希望将其分配到两个单独的字符串Aaaa
和Bbbb
中.
事实上,我必须读取一个没有空格的SurnameName,并将其放在两个单独的字符串中.
我的目标是分离姓氏以便进一步处理. 我不必判断意外情况,也没有其他要判断的内容,只需要判断一份SurnameName列表.
我不能用一种"简单"的方式做到这一点.
我最好的try 是
char str1[20], str2[20], str3[20];
fscanf(hl_inp, "%1c%[^A-Z]%s", str1, str2, str3);
但我想避免任何重新组装的过程,这里有str1
和str2
.
有没有直接这样做的 idea ,或者比我的try 更好的 idea ?
编辑:完成重印,让我们最后一次try .
我有一根绳子.它都是小写字符,包含两个且只有两个大写字符.该字符串最多可包含20个字符.
两个大写字符遵循以下规则:
- 它们不是连续的.
- 他们都不可能是最后一个角色.
- 他们中的一个总是第一个角色.
这是最好的try :
char name[] = "WillisBruce";
char str1[20], str2[20], str3[20];
sscanf(name, "%1s%[^A-Z]%s", str1, str2, str3);
strcat(str1, str2);
printf("Name: %s, Surname: %s", str3, str1);
在本例中,该字符串为"WillisBruce". 但也可能是"CareyMariah"、"JonhElton"和"ObamaBarak".
根据规定,它可能不是"麦当劳".
我不必判断规则,我可以理所当然地接受它们.
我的例子完成了我想要的工作,但我想知道我是否可以避免任何形式的重新组装.