又一好帖子,我加点料下去,仅供娱乐:
scanf()中使用%n可以得到已经获得的字符个数。使用如下:
#include<stdio.h>
int main(void)
{
char strings[100];
int num;
scanf("%s%n",strings,&num);
printf("上面已经获得%d字符",num);
return 0;
}
注意:要区别于scanf()的返回值(成功获得的数据个数)。
3. 仅当scanf()用于字符串时的技巧------扫描集格式。通过下面的程序进行说明:
#include<stdio.h>
int main(void)
{
char strings[100];
scanf("%[1234567890]",strings);
printf("%s",strings);
return 0;
}
运行,输入:1234fjerkfj后,结果是:1234。作用是:如果输入的字符属于方括号内字符串中某个字符,那么就提
取该字符;如果一经发现不属于就结束提取。该方法会自动加上一个字符串结束符到已经
提取的字符后面。
如果要进行上述作用的逆命题,可以该为scanf("%[^1234567890]",strings); 它的作用是 :如果一经发现输入的字符属于方括号内字符串中某个字符,那么就结束提取;如果不属 于就提取该字符。该方法会自动加上一个字符串结束符到已经提取的字符后面。
注意:方括号两边不能空格,如:scanf("%[ 1234567890 ]",strings); scanf("%[ ^123
4567890 ]",strings)
[1234567890]这里用的是正则表达式吗?