c语言sscanf截取字符串函数获取后缀名

char abd[80]="aaabc.jpg";

sscanf(abd, "%s.%s", buf1, buf2);
好像用空格等字符可以截取字符串,用点符号不能分割字符串从而获取后缀名。
最新回答
温柔又爱笑

2025-06-20 14:55:20

可以这么处理:

#include <stdio.h>
int main()
{
char abd[80]="abcde.jpeg";
char buf1[80], buf2[80];
sscanf(abd, "%[^.]", buf1);
//先读取.之前的字符串,到.为止
sscanf(abd, "%*[^.].%s", buf2);
//先忽略.之前的字符,再读取.之后的字符
printf("%s\n", buf1);
printf("%s\n", buf2);
return 0;
}

合并成一个就是:

sscanf(abd, "%[^.].%s", buf1, buf2);
级尽妖娆

2025-06-20 16:31:45

试试这样:
#include <stdio.h>
int main()
{
char abd[80]="aaabc.jpg";
char buf1[10],buf2[10];

sscanf(abd, "%[^.].%[^.]", buf1, buf2);
printf("buf1=%s buf2=%s",buf1, buf2);
}

http://baike.baidu.com/view/1364018.htm
余盼兮

2025-06-20 11:03:43

如果是这样的话必须用
scanf("%[^.]", buf1);
来读取“.”之前的字母,然后用 scanf("%[^\n]", buf2); 来读取"."之后,下一行之前的字母。
末暧

2025-06-20 19:20:47

sscanf函数是无法判断你这个“.”是字符串内的还是作为分隔符的。
建议用 strchr(abd, '.'),从字符串左边来获取位置,或者strrchr从后面获取。