这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。
考察了sscanf! int sscanf(const char *buffer, const char *format[, argument]); 功能:The sscanf function reads data from buffer into the location given by each argument.
e.g:
char buf[100];
char a1[10], a2[10], a3[10];
int len;
gets(buf);
sscanf(arr, "%s %s %s", a1, a2, a3);
printf("%s %s %s\n", a1, a2, a3);
printf("-------------------------\n");
sscanf(arr, "%s", a1);
sscanf(arr, "%s", a2);
sscanf(arr, "%s", a3);
printf("%s %s %s\n", a1, a2, a3);
输入: abc(空格)def(空格)ghi 输出:
abc(空格)def(空格)ghi
abc abc abc
代码:
#include
#include
#include
using namespace std;
char word[1000];
char arr[100][100]; //arr用于存储以前出现过的单词
int main()
{
int len, pos;
char temp[100];
while(gets(word) && strcmp(word, "#") != 0)
{
len = strlen(word);
pos = 0;
int cnt = 0;
// pos加单词长度一直到>=len
while(pos < len)
{
sscanf(word + pos, "%s", temp); //把一个单词存入temp,空格忽略
int k;
for(k = 0; k < cnt; ++k)
if(strcmp(temp, arr[k]) == 0) //如果和以前存入的单词相同,则不计数
break;
if(k == cnt)
strcpy(arr[cnt++], temp); //把temp存入arr,并计数器cnt加一
pos += strlen(temp) + 1;
}
printf("%d\n", cnt);
}
return 0;
}