#include
#include
void main()
{
char a[7], b[7];
int i, t = 0;
printf("请输入第一个字符串:");
gets_s(a);
printf("请输入第二个字符串:");
gets_s(b);
for (i = 0; i < 10; i++)
if (a[i] != b[i])
{
t = a[i] - b[i];
break;
}
else
continue;
printf("第一个不同的字符之差为:%d\n", t);
}
gets_s换成scanf_s后就会出现0x00007FFF3101E1F9 (ucrtbased.dll)处(位于 1.exe 中)引发的异常: 0xC0000005:
的异常?
gets_s(a);
->
scanf_s("%s", &a[0], 7);
另一个类似
注意,只能输入最多6个字符。
可能是你没有给scanf_s提供缓冲区大小,scanf_s最后一个参数是缓冲区的大小,表示最多读取n-1个字符.。在调用时,必须提供一个数字以表明最多读取多少位字符。
此处应该写scanf_s("%s", &a[0], 7);因为输入字符串会在末尾加一个空字符,所以最多可以输入6个字符。
0xC0000005异常通常是由访问冲突引起,代码中循环变量i一直可以加到7到10,而数组下标只能到6,会发生数组越界访问冲突的情况。
因为scanf_s不读取空格,所以数组里没有空格,读取的时候,scanf_s会以空格,制表符,回车来停止读取。