先看下边这段代码
#include<stdio.h>
int main()
{
char test1[40],test2[40];
scanf("%s,%s",test1,test2);
printf("%s%s",test1,test2);
return 0;
}
在学习过程中尝试使用”,”隔开scanf中两个字符串的输入.尝试输入如下
hello,world
结果直接输出了hello,world,和一行乱码
如图
查询资料后发现原因在于scanf输入字符串时逗号不能作为分隔符**
于是采用了如下的解决办法:
用正则表达式,用%[^,]替代%s,意思是使scanf读取到逗号时停止读取.并且保留逗号,
即将代码修改为
#include<stdio.h>
int main()
{
char test1[40],test2[40];
scanf("%[^,]%s",test1,test2);
printf("%s\n%s",test1,test2);
return 0;
}
这样,可以通过逗号来使scanf的读取停止.得到正确的输出,如图