字符串数组输出后会出来一堆多余的东西,求各位大神指教。主函数没问题,问题应该....
//写一个函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空一个空格。如输入1990,应输出“1 9 9 0”#include<stdio.h>
#include<string.h>
int main()
{
void insert(char b[]);
int i;
char a;
printf("Enter the data:\n");
for(i=0;i<4;i++)
scanf("%c",&a);
printf("The orginal number is :");
for(i=0;i<4;i++)
printf("%c",a);
printf("\n");
printf("The new number is:");
insert(a);
return 0;
}
void insert(char b[])
{
int i;
for(i=strlen(b);i>0;i--)
{
b=b;
b=' ';
}
for(i=0;i<strlen(b);i++)
printf("%c",b);
}
strlen是遇到'\0'结束的,数组a没有初始化,所以strlen(b)时真正的长度不是4;这样后面的操作都是有风险的,会越界;
建议:养成好的习惯,变量一定要初始化; 请问具体怎么初始化啊? char a={0}; //初始化数组a zhaoshaoyan123 发表于 2018-6-15 20:05
char a={0}; //初始化数组a
谢谢您 戚晓栖 发表于 2018-6-15 09:24
strlen是遇到'\0'结束的,数组a没有初始化,所以strlen(b)时真正的长度不是4;这样后面的操作都是有风险的 ...
谢谢
页:
[1]