字符串骚操作
这是zzq学长大一上教我们的,基本没用过,都快忘了,今天整理一下当时做的笔记。
sscanf
sscanf(&," “,&);提取字符串中的特定字符
表达式1为被提取字符串的首地址
表达式2为提取元素的字符控制,相当于scanf”"中的内容
表达式3为提取出元素存放的地址
char s[105]="1(2)3";
int a,b,c;
sscanf(s,"%d(%d)%d",&a,&b,&c);
printf("a=%d b=%d c=%d\n",a,b,c);
sprintf
sprintf(&,"",*&);发送格式化输出到 p 所指向的字符串
表达式1为被提取字符串的首地址
表达式2为提取元素的字符控制,类似于printf""中的内容
表达式3类似于printf的后半部分
char p[1010];
int a=1,b=2,c=233;
sprintf(p,"%d*%d^%d",a,b,c);
puts(p);
strtok
strtok(&,""); 分解字符串 ss 为一组字符串,注意:会改变原字符串
#include
表达式1为被切割字符串地址
表达式2中""内为切割的标志符号
char ss[]="1,22,333,4444\n";
char *pp=strtok(ss,","); //第一次切割
while(pp){ //将剩余的串切割
//if(!strcmp(ss,"")) break; //可能要对最后一次的输入的回车做处理
puts(pp);
pp=strtok(NULL,",");
}
若切割标志有多个
char sss[]="1,00.22,.333,.4444";
char *ppp=strtok(sss,",.");
while(ppp){
puts(ppp);
ppp=strtok(NULL,",.");
}