C语言的字符赋值

来源:百度知道 编辑:UC知道 时间:2024/07/05 16:10:41
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char s[10];
int main(){
s[1]='a';
s[2]='b';
puts(s);
system("pause");
return 0;
}
这样赋值不行吗?为什么输出来什么也没有啊?!

判断字符串结束的标志是字符串后面的“\0”
你赋值是从s[1]开始的,所以s[0]的值还是“\0”
puts(s)的时候,因为遇到了“\0”所以就判断这个字符串是空串。也就是什么都输不出来啦~
按照你的意思,正确的赋值方法是:
s[0]='a';
s[1]='b';

呵呵

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char s[10];
int main(){
s[0]='a';
s[1]='b';
puts(s);
system("pause");
return 0;
}

原来s的第一个字符就是0,自然什么都没有

你的程序里是从s[1]开始赋值的,而作为全局量进行声明的s[10]会被默认的进行全空的初始化,所以赋值后的字符串s[10]的第一个字符为空('\0'),
puts()函数执行时,默认遇到'\0'时字符串完毕输出终了,
由于s[0]为'\0',所以就什么也输出不了了。

另外,还有一点可以说一下,
char s[10]; 是作为全局量进行声明的s[10]会被默认的进行全空的初始化
如果将char s[10]; 作为局部变量进行声明,就不会进行默认的初始化动作了,
这样的话,你的代码是有输出的,但是输出的值不确定,因为除了s[1],s[2]外,其他的值都是随机值。
例如:
#include<stdlib.h>
#include<string.h>
//char s[10];
int main(){
char s[10];
s[1]='a'; <