马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 挥世及至吾 于 2018-8-6 21:27 编辑
带你学c带你飞的S1E19,动动手0,代码如下#include <stdio.h>
int main()
{
signed char str1[256],str2[256],i,res,num; //num为整型
printf("请输入第一个字符串:");
scanf("%s",str1);
printf("请输入第二个字符串:");
scanf("%s",str2);
printf("str2 == %d\n",str2[0]); //这边输出为ASCII码
printf("请输入比较的字符数:");
scanf("%d",&num);
printf("str2 == %d\n",str2[0]); //这边输出为0
for (i = res = 0;i < num;i++)
{
if (str1[i] != str2[i])
{
res = str1[i]-str2[i];
break;
}
}
printf("比较的结果是:%d\n",res);
return 0;
}
然后改为用int定义num又正常了,然后我-->,到底为什么呢,我也没看到scanf函数有什么相关规定啊
有没有大帅哥大美女求解释啊啊啊啊啊
楼主,实际测试了下,改成%c是没有问题的。
不知道楼主有没有按我的回答实际测试过?
我大概明白你的意思了,我觉得这个问题应该和堆栈有关啦。
当你以%d读取输入,整数一般会占用4个字节,按照小端存储以及数组存放第一个值的地址的原理,恰好把str[256]的值覆盖掉。
可以尝试输出一下地址,应该就可以找到问题所在了。
|