【发布时间】:2012-06-07 06:55:53
【问题描述】:
这里我有一个字符数组,其中有一些拆分器。
字符数组为char sentence []="abc_12.22.32.42";
我想使用 sscanf 从句子中读取 abc,12,22,32,42。
我尝试使用 sscanf,但它给出了不同的输出。
我在这里发布了两个代码,其中一个工作正常。
如果我用%s = %s 阅读abc = 12,那么它的工作原理。为什么我们必须在拆分器之间留出空间。
实现这一目标的任何方式。
代码无效:
#include <stdio.h>
int main ()
{
char sentence []="abc_12.22.32.42";
char str [20];
char str1 [20];
char str2 [20];
char str3 [20];
sscanf (sentence,"%s_%s.%s.%s.%s",str,str1,str2,str3);
printf ("%s --> %s --> %s --> %s --> %s\n",str,str1,str2,str3);
return 0;
}
输出:
abc_12.22.32.42--> -- � -->�Tl�s --> (null)
预期输出:
abc --> 12 --> 22 --> 32 --> 42
工作代码:
/* sscanf example */
#include <stdio.h>
int main ()
{
char sentence []="abc = 12";
char str [20];
char str1 [20];
char str2 [20];
char str3 [20];
if(sscanf(sentence,"%s = %s",str,str1) < 5) ;
printf ("%s--> %s\n",str,str1);
return 0;
}
输出:
abc--> 12
【问题讨论】: