C 什么';这个节目怎么了?分词程序

C 什么';这个节目怎么了?分词程序,c,C,我对这有点陌生,所以我被一些可能非常简单的东西困住了 在这个程序中,我试图将数组中的每个单词以及任何句点、逗号或分号分隔成二维数组。然而,它只在一行中重印了这句话。我做了几个测试,第一个for循环似乎永远不会识别空格、逗号、句点或分号。有人能帮忙吗 #include <stdio.h> #include <stdlib.h> int main() { char wordProblem[1024]; char wordProblemWords[200][20]; pri

我对这有点陌生,所以我被一些可能非常简单的东西困住了

在这个程序中,我试图将数组中的每个单词以及任何句点、逗号或分号分隔成二维数组。然而,它只在一行中重印了这句话。我做了几个测试,第一个for循环似乎永远不会识别空格、逗号、句点或分号。有人能帮忙吗

#include <stdio.h>
#include <stdlib.h>

int main()
{
char wordProblem[1024];
char wordProblemWords[200][20];

printf("Please enter a word problem.\n");

fgets ( wordProblem, 1024, stdin );
int length = strlen (wordProblem);
int i;
int wordNumber = 0;
int letterOfWord = 0;
for ( i = 0; i < length; i++){
    if (wordProblem[i]==" ") {
        ++wordNumber;
        letterOfWord = 0;
    }else if (wordProblem[i]=="." || wordProblem[i]=="," || wordProblem[i]==";"){
        ++wordNumber;
        letterOfWord = 0;
        wordProblemWords[wordNumber][letterOfWord] = wordProblem[i];
        wordNumber;
        letterOfWord = 0;
    }else{
        wordProblemWords[wordNumber][letterOfWord] = wordProblem[i];
        ++letterOfWord;
    }
}

int j;
for (j = 0; j <= wordNumber; j++){

    printf("%s", wordProblemWords[j]);
    printf("\n");
}
return 0;
}
#包括
#包括
int main()
{
字符问题[1024];
char-wordProblemWords[200][20];
printf(“请输入一个单词问题。\n”);
fgets(wordProblem,1024,stdin);
int length=strlen(字问题);
int i;
int-wordNumber=0;
int-letterOfWord=0;
对于(i=0;i对于(j=0;j您需要使用单引号来比较单字符。双引号表示字符串

if (wordProblem[i]==' ') {
    ++wordNumber;
    letterOfWord = 0;
} else if (wordProblem[i]=='.' || wordProblem[i]==',' || wordProblem[i]==';'){
    ...

另外,请注意,
fgets
将在结果中包含换行符。

谢谢,伙计!真的很感激,真不敢相信有人会这么快回复。^^^@欢迎使用StackOverflow。代码需要允许多个空格,等等,因此在第一个空格后的空格串中的每个空格都不计算其他单词。这行:'wordNumber;'引发编译器警告。请启用所有警告,重新编译代码,修复警告,然后重新发布代码。发布的代码会导致strlen()的隐式声明。这需要通过添加以下语句来更正:“#include”我已根据tivn的答案更新了代码,并做了一些更改,以删除控制台日志中多余的胡言乱语。我还将该语句包含在您的第三条注释中。当我现在构建它时,没有显示任何警告,因此我认为您的第二条注释已被清除。因此,h我怎么能允许多个空格呢?我真的不需要,因为我正在基于此制作一个更大的程序,并且我相信输入的语法是正确的,但是如果我可以做一个简短的编辑,那么我会把它包括进去。
if (wordProblem[i]==' ') {
    ++wordNumber;
    letterOfWord = 0;
} else if (wordProblem[i]=='.' || wordProblem[i]==',' || wordProblem[i]==';'){
    ...