C 语言中怎么截取字符串的一部分?

2025-03-22 22:56:19
推荐回答(4个)
回答1:

用指针,再if判断,将+号前面的提出来放入你自定义的一个字符串中。再用一个if判断,将+号后面的放入另一个字符串中

回答2:

用sscanf函数
sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。
1. 常见用法。   char buf[512] ;   sscanf("123456 ", "%s", buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!   printf("%s\n", buf);   结果为:123456  
2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。   sscanf("123456 ", "%4s", buf);   printf("%s\n", buf);   结果为:1234   
3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。   sscanf("123456 abcdedf", "%[^ ]", buf);   printf("%s\n", buf);   结果为:123456   
4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。   sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);   printf("%s\n", buf);   结果为:123456abcdedf   当输入:   sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf);   printf("%s\n",buf);   结果为:123456   
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。   sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);   printf("%s\n", buf);   结果为:123456abcdedf   
6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中   sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);   printf("%s\n", buf);   结果为:12DDWDFF   
7、给定一个字符串“hello, world”,仅保留world。(注意:“,”之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)   sscanf(“hello, world”, "%*s%s", buf);   printf("%s\n", buf);   结果为:world   %*s表示第一个匹配到的%s被过滤掉,即hello被过滤了   如果没有空格则结果为NULL。   
sscanf的功能很类似于正则表达式, 但却没有正则表达式强大,所以如果对于比较复杂的字符串处理,建议使用正则表达式.

回答3:

char a[]="34+65";
int i,j;
sscanf(a,"%d+%d",&i,&j);
printf("%d\n%d",i,j);

回答4:

提取子串和字符串连接
题取子串的函数是:substr(),形式如下:
s.substr();//返回s的全部内容
s.substr(11);//从索引11往后的子串
s.substr(5,6);//从索引5开始6个字符
搜索与查找
查找函数很多,功能也很强大,包括了:
find()
rfind()
find_first_of()
find_last_of()
find_first_not_of()
find_last_not_of()
这些函数返回符合搜索条件的字符区间内的第一个字符的索引,没找到目标就返回npos。所有的函数的参数说明如下:
第一个参数是被搜寻的对象。第二个参数(可有可无)指出string内的搜寻起点索引,第三个参数(可有可无)指出搜寻的字符个数。比较简单,不多说不理解的可以向我提出,我再仔细的解答。当然,更加强大的STL搜寻在后面会有提及。
最 后再说说npos的含义,string::npos的类型是string::size_type,所以,一旦需要把一个索引与npos相比,这个索引值必须是string::size)type类型的,更多的情况下,我们可以直接把函数和npos进行比较(如:if(s.find("jia")== string::npos))。

当然你可以自己写函数实现,可以用数组也可以用指针,看你自己的编写爱好了,你可以参考:
http://zhidao.baidu.com/question/242626190.html?an=0&si=1
我就是从这里复制给你的,因为实在难得打字了,C和C++函数类似。