首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求解一个关于数组的有关问题

2012-09-10 
求解一个关于数组的问题#include stdio.h#define MAX 80int main(void){char ch, buffer[MAX+1]int x0

求解一个关于数组的问题
#include <stdio.h>
#define MAX 80

int main(void)
{
  char ch, buffer[MAX+1];
  int x=0;
  while ((ch=getchar())!='\n'&&x<MAX)
  buffer[x++]=ch;
   
  buffer[x]='\0'; \\这句的意思是在字符串后加上空字符能写成buffer[x+1]='\0'; 这句的x 和上面的x++ 最后一个值是同一个么?
  printf("%s\n",buffer);
  return 0;
}



[解决办法]
buffer[x]='\0'为了保证最后以0结尾,保证存储的是字符串,字符串是以0为结尾的。
while ((ch=getchar())!='\n'&&x<MAX)
buffer[x++]=ch;
假设用'a'填充了0-3位即
buffer[0] = 'a'
buffer[1] = 'a'
buffer[2] = 'a'
buffer[3] = 'a'
最后一句buffer[x]='\0';表示buffer[4] = 0;
[解决办法]
循环退出时 x指向数组下一个可写的位置,追加字符串结束标志
[解决办法]
不是一个
buffer[x++]=ch等价于下面两条语句
buffer[x]=ch;
x++;

——————————————————————————
x++是先进行x的值操作,再进行++

比如 x=1;
cout<<x++<<endl;
输出结果为1,但这条语句进行完后x的值变为了2

————————————————————————————
++x正相反,先++,再进行x的值操作
x=1;
cout<<++x<<endl;
输出结果为2


热点排行