数组越界
void print(int a[],int length){
int i;
for(i=0;i<length;i++) {
printf("i=%d\n", a[i]);
}
}
int main() {
int a[5]={1,2,3,4,5};
print(a,5);
return 0;
}
输出字符串乱码时,查看字符串数组是否存储了结束符"/0“
void print(char a[])
{
int i=0;
while(a[i])
{
printf("%c",a[i]);
i++;
}
printf("\n");
a[0]='H'; // 数组赋值
}
int main() {
char c[6]="hello";
char d[4]="how";
// char c[5]="abcde";
print(c);
printf("%s",c); // 使用%s输出一个字符串
return 0;
}
scanf读取字符串
正常来说定义一个变量在scanf中需要取其地址用来存储输入的值,但是scanf读取字符串则不需要,因为初始化的数组已经保存了对应的地址
scanf在读取字符串的时候会自动添加结束符,读到结束符就停止了
比如我输入了hello
比如输入 how are scanf可以使用两个变量进行保存,第二个变量会忽略空格
gets puts
int main() {
char c[20];
gets(c); // gets中放入我们字符数组的数组名即可
puts(c); //puts等价于printf("%s\n); puts内放的参数是字符数组名
return 0;
}