[英]Why is the output of my C program incorrect?
这是我在C中的代码,它从输入中读取数据:
#include<string.h>
#define MAX 3
char a[MAX];
char b[MAX];
void ReadFirstNumber();
void ReadSecondNumber();
int lb,la=0;
void main()
{
ReadFirstNumber();
ReadSecondNumber();
printf("\n First Number > %d %d %d \n",a[0],a[1],a[2]);
printf(" Second Number > %d %d %d \n",b[0],b[1],b[2]);
}
void ReadFirstNumber()
{
int i=0;
printf("Enter the first number:");
scanf("%s", a);
la=strlen(a)-1;
for(i=0;i<=la;i++)
{
a[i] = a[i] -48;
}
}
void ReadSecondNumber()
{
int j=0;
printf("Enter the Second number:");
scanf("%s", b);
lb=strlen(b)-1;
for(j=0;j<=lb;j++)
{
b[j] = b[j] -48;
}
}
输入第一个数字示例: 123
输入第二个数字示例: 456
或任何3位数字
//output
First Number **0**23
Second Number 456
第一个数字的输出是023
第一个角色是零 ! 但第二个数字的输出是好的。
当我注释掉第二个函数//ReadSecondNumber();
它工作得很好!
你没有为null终结符char留出足够的空间,即scanf(“%s”,...)在'strings'的末尾写入。 增加MAX #define的值。 你也可以放入更大的东西,例如32。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.