EzioA 发表于 2015-12-1 21:35:02

C语言一个关于字符数组的问题

以下代码的功能:输入一个句子,输出其中的单词个数,每个单词之间以空格连接。
#include <stdio.h>
#define N 200
void cal(char str[]);
int main()
{
        char str   /*= {'0'}*/    ;                                 
        printf("please input sentence:\n");
        gets(str);
        cal(str);
        return 0;
}
void cal(char str[])
{
        int i = 0,k;
        for (k = 0; str != '\0'; k++)
        {
                for (; str != '\ ' && str != '\0'; i++);
                i++;
        }
        printf("there are %d words\n",k);
}


问题出在注释的位置。
假如我加上注释,那么输入回车,输出0;输入N个空格,输出N;但是输入1个单词时,会输出4,输入2个单词,输出为5(多了3个单词)。

假如我取消注释,即给数组的第一个元素初始化,输出结果就正常了。

来个大神看看这什么情况   0.0

EzioA 发表于 2015-12-1 23:30:00

有人吗有人吗-=-

ravenhu13 发表于 2015-12-2 14:05:27



#include <stdio.h>

int print(int*);

void cal(char str[])
{
        int i = 0,k;

        for (k=0;str!='\0';k++)
        {
                if (str=='\ ')
                {
                        i++;
                }
        }
        i++;
        printf("there are %d words\n",i);
}


int main()
{
        char str;                                 
        printf("please input sentence:\n");
        gets(str);
        cal(str);
        return 0;
}

EzioA 发表于 2015-12-2 16:39:45

ravenhu13 发表于 2015-12-2 14:05


谢谢啦!虽然还不知道我原来的代码哪儿有问题-=-

斩月and剡月 发表于 2015-12-2 19:21:25

我只是路过打酱油的
页: [1]
查看完整版本: C语言一个关于字符数组的问题