
为什么输出以后,在我定义的字符数组后还会出现两个多余的汉字,谢谢大家。
#include<stdio.h>voidmain(){charc[9]={'*','','*','','*','','*','','*'};intn,i,m;for(i...
#include<stdio.h>
void main()
{
char c[9]={'*',' ','*',' ','*',' ','*',' ','*'};
int n,i,m;
for(i=1;i<=5;i++)
{
for(n=1;n<=i;n++) printf(" ");
printf("%s",c);
}
} 展开
void main()
{
char c[9]={'*',' ','*',' ','*',' ','*',' ','*'};
int n,i,m;
for(i=1;i<=5;i++)
{
for(n=1;n<=i;n++) printf(" ");
printf("%s",c);
}
} 展开
1个回答
展开全部
printf("%s",c);你这里的输出控制格式是%s 他表示的意思是输出当前字符以后的所有字符直到遇到字符串结束符,而你的数组里面没有字符结束标志 所以他便会一直输出,后面的全是乱码不仅仅是多2个汉字,
解决方法 在增加一个字符'\0'在数组后面 char c[10]={'*',' ','*',' ','*',' ','*',' ','*','\0'};或者
char c[10]={'*',' ','*',' ','*',' ','*',' ','*'};最后一位被默认为是字符结束符了 就像int arr[10]={12};除arr[0]是12,其他的下标元素值全是0了
建议: 程序中的第二个循环只能控制最近的一条语句(在不加{}大括号的情况下),平时for循环if(),else后面最好紧跟一对大括号
解决方法 在增加一个字符'\0'在数组后面 char c[10]={'*',' ','*',' ','*',' ','*',' ','*','\0'};或者
char c[10]={'*',' ','*',' ','*',' ','*',' ','*'};最后一位被默认为是字符结束符了 就像int arr[10]={12};除arr[0]是12,其他的下标元素值全是0了
建议: 程序中的第二个循环只能控制最近的一条语句(在不加{}大括号的情况下),平时for循环if(),else后面最好紧跟一对大括号
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询