如何计算C语言中的唯一字数

如何计算C语言中的唯一字数,c,C,我需要计算用户从键盘输入的每个唯一单词的数量。我应该使用scanf或fgets来存储句子吗 我尝试过使用fgets,但编译器抛出了一个错误。您可以选择scanf在C程序的变量中存储一个句子。使用下面的代码,您可以存储50个字符 #include <stdio.h> #include <string.h> #include <stdlib.h> int main(){ char a[50]; printf("Read a string

我需要计算用户从键盘输入的每个唯一单词的数量。我应该使用
scanf
fgets
来存储句子吗


我尝试过使用
fgets
,但编译器抛出了一个错误。

您可以选择
scanf
C
程序的变量中存储一个句子。使用下面的代码,您可以存储50个字符

#include <stdio.h> 
#include <string.h>
#include <stdlib.h>
int main(){
    char a[50];
    printf("Read a string:\n");
    scanf("%[^\n]", a);
    printf("\nThe Sentence is; %s", a);
    return 0;
}
#包括
#包括
#包括
int main(){
chara[50];
printf(“读取字符串:\n”);
scanf(“%[^\n]”,a);
printf(“\n句子是;%s”,a);
返回0;
}

fgets
这是阅读句子的最佳方式,如果选择此路径,则需要使用
strtok
从句子中推断单个单词

我建议您使用
fgets
strtok
strstrstr
。我想这是最好的办法


strok
strstrstr
strimg.h
标题中定义。

scanf(“%[^\n]s”,a)您不需要
s
Fyi,
fflush(stdin)调用未定义的行为
fflush
专门用于为wriitng打开的文件流,而stdin
则不是。不管是什么短信让你这么做。。烧掉它。
scanf(“%[^\n]”,a)
get()
更糟糕。它甚至不读取
stdin
中的整行内容(保留
'\n'
),并且如果该行以
'\n'
开头,则该行将毫无用处。要计算唯一单词的数量,无需保存任何单词。Jack Empire,除了计算单词外,还需要保存单词吗?@Restore在不存储第一个单词的情况下,如何判断第三个单词是否重复?“我已尝试使用FGET,编译器抛出错误”表示您的用法不正确。如果你想知道如何使用
fgets
,可以问这样一个问题:“我试过像这样使用
fgets
[这里有完整的示例],但我遇到了这个编译器错误[这里有完整的错误消息]。”这个问题可能可以回答,你很可能会从答案中学到一些有用的东西。“我试过X,但我做不好,所以我下一步该怎么做?”这不是一个任何人都会费心回答的问题。即使他们这样做了,您仍然不知道如何使用
fgets
。此外,编译器错误消息通常会让您了解错误所在。你至少应该试着理解消息告诉你的是什么。
strok()
不是好建议。通常不要使用
strtok()
,因为
是静态的
变量。