华小刀 发表于 2018-6-15 09:06:55

字符串数组输出后会出来一堆多余的东西,求各位大神指教。主函数没问题,问题应该....

//写一个函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空一个空格。如输入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);
}

戚晓栖 发表于 2018-6-15 09:24:46

strlen是遇到'\0'结束的,数组a没有初始化,所以strlen(b)时真正的长度不是4;这样后面的操作都是有风险的,会越界;
建议:养成好的习惯,变量一定要初始化;

华小刀 发表于 2018-6-15 19:29:55

请问具体怎么初始化啊?

zhaoshaoyan123 发表于 2018-6-15 20:05:09

char a={0};   //初始化数组a

华小刀 发表于 2018-6-15 22:16:29

zhaoshaoyan123 发表于 2018-6-15 20:05
char a={0};   //初始化数组a

谢谢您

华小刀 发表于 2018-6-15 22:17:01

戚晓栖 发表于 2018-6-15 09:24
strlen是遇到'\0'结束的,数组a没有初始化,所以strlen(b)时真正的长度不是4;这样后面的操作都是有风险的 ...

谢谢
页: [1]
查看完整版本: 字符串数组输出后会出来一堆多余的东西,求各位大神指教。主函数没问题,问题应该....