急,各位帮忙 找找这c中的错误

来源:百度知道 编辑:UC知道 时间:2024/05/11 02:56:39
#include <stdio.h>//次函数是被调用的函数,在主函数中赋给data,addend两长位数值;但主函数输出却是‘笑脸’,各位帮忙看看这里面的错误
#include <string.h>
char* add1(char* ar, char* br, char* result);

char* add1(char* ar, char* br, char* result)
{
int i, j;
int c = strlen(ar);
for(i = c - 1; i > 0; i --)
{
if(ar[i] + br[i] >= 70)
{
ar[i - 1] = ar[i - 1] + 31;
result[i] = ar[i] + br[i] - 40;
for(j = 1; j < i; j ++)
{
if(ar[i - j] > 39)
{
ar[i - j] = ar[i - j] - 40;
ar[i - j - 1] = ar[i - j - 1] + 31;
}
}
}
else
{
result[i] = ar[i] + br[i];
}
}
return result;
}
char* add(char* data, char* addend, char* result)
{
int a, b, c, i,

char ar[c], br[c];
这里很明显错了 数组中的值不能用变量 c应该改为数值 像50这种数

这样编译就没有错误提示了

还有这里主函数都没有,虽然cpp支持这个特性 但为了通用建议还是要用主函数. 否则别人看到你的代码都会头晕的

----------------------------------------------------------------

ar[i - 1] = ar[i - 1] + 31;
result[i] = ar[i] + br[i] - 40 这些指的是具体的数组下标 是可以运算的

char数组中的每一个元素存放一个字符,而字符运算则是要转变成相关的ascii代码值在运算的 比如数字1的ascii码是49 在数组中1+1就等于98了 而98的ascii码又对应小写字母b 所以用字符串格式打印出来的就是b 而用%d打印出来就98了 自己调试下就可以更明白了
还有数组相加很有可能会出错,所以不建议采用 如a+a就变成负值了 希望对你有帮助吧

不要用return返回指向‘栈内存的指针’,该内存在函数结束是自动消亡.
是一个随机值

他显示是什么错误啊!