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 有人吗有人吗-=-
#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;
}
ravenhu13 发表于 2015-12-2 14:05
谢谢啦!虽然还不知道我原来的代码哪儿有问题-=- 我只是路过打酱油的
页:
[1]