关于字符数组的问题

eastdon 2010-12-15 10:45:14
#include <stdio.h>
int main(){
int i,spacetimes=0;
char c[]=" ";

for(i=0;i<100;i++){
if (c[i]==' '){
spacetimes++;
}
}
printf("spacetimes=%d",spacetimes);
getchar();
return 0;
}
//为什么输出结果是2,明明只有一个空格的说


这是我做的一个检索输入字符中有多少个空格的程序,但是运行的结果是总是会比实际输入的空格数多1,于是我就直接把数组设置为只有一个空格的字符数组,但是运行的结果还是2

迷茫了。。求解
...全文
72 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
eastdon 2010-12-15
  • 打赏
  • 举报
回复
谢。。。
pur_e 2010-12-15
  • 打赏
  • 举报
回复
ansi c字符数组最后都有个'\0'字符当结束符的
加个c[i]就是判断这个字符是不是'\0',如果是的话就结束循环
eastdon 2010-12-15
  • 打赏
  • 举报
回复
原来我做的程序时在开始时用一个gets(c)输入一段字符
然后统计这串字符里面的空格数,所以访问了整个数组。。。
cwbcwb505 2010-12-15
  • 打赏
  • 举报
回复
数组访问越界了,你那个字符串长度只有1,你为什么要访问100个呢?不解
eastdon 2010-12-15
  • 打赏
  • 举报
回复
谢谢2楼的大大。。我按照你的方法改了下,成功了。。。

但是请问下for(i=0;i<100&&c[i];i++)是什么意思?读不懂这句语句

为什么要加个c[i]
flysnowhite 2010-12-15
  • 打赏
  • 举报
回复
还有循环可以修改为:
char *p=c;
while(*p)
{
if (*p==' ')
spacetime++;

这样就不会有问题了
hai040 2010-12-15
  • 打赏
  • 举报
回复
随机的
phpjspasp 2010-12-15
  • 打赏
  • 举报
回复
程序有问题,可能跑飞了。
eastdon 2010-12-15
  • 打赏
  • 举报
回复
回复3楼:我用的是DEV C++ 5.。运行结果就是2.。。
flysnowhite 2010-12-15
  • 打赏
  • 举报
回复
我在VC6.0上测试,结果为1.
  • 打赏
  • 举报
回复
我在VC6的运行怎么结果是1呢?
你用的什么编译器?
pur_e 2010-12-15
  • 打赏
  • 举报
回复
for(i=0;i<100;i++)
你不要直接这样循环100次啊,只能说刚好后面有个字符也是空格

改为:
for(i=0;i<100&&c[i];i++)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧