改一个地方就报错,为什么??
  • 板块灌水区
  • 楼主molly1212
  • 当前回复11
  • 已保存回复11
  • 发布时间2024/8/24 17:39
  • 上次更新2024/8/24 20:46:43
查看原帖
改一个地方就报错,为什么??
556017
molly1212楼主2024/8/24 17:39

我有一个很奇怪的问题。本来我的代码是这样的。(看第7行就行了)

#include <bits/stdc++.h>
using namespace std;
int a[5];
char b,c;
int main()
{
	while (scanf("%c:=%c;",&b,&c) == 2)//注意这一行
	{
		a[b-'a'] = (c >= '0' && c <= '9' ? c-'0' : a[c-'a']);
	}
	printf("%d %d %d\n",a[0],a[1],a[2]);
	return 0;
}

但如果改成这样:

#include <bits/stdc++.h>
using namespace std;
int a[5];
char b,c;
int main()
{
	while (scanf("%c:=%c;",&b,&c) != -1) //此处改了一下
	{
		a[b-'a'] = (c >= '0' && c <= '9' ? c-'0' : a[c-'a']);
	}
	printf("%d %d %d\n",a[0],a[1],a[2]);
	return 0;
}

程序就会警告3221225477(访问了野指针),为什么呢?

2024/8/24 17:39
加载中...