求解一个关于数组的有关问题
求解一个关于数组的问题
#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
#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