C语言编译失败 关于字符串求助
查看原帖
C语言编译失败 关于字符串求助
1053560
Kotori_Kawaii楼主2023/9/24 15:02
#include<stdio.h>
#include<math.h>
int main() 
{
	
	char* ch[4] = { "A","B","C"};
	int a, b, c,least,mid,most;
	scanf("%d %d %d", &a, &b, &c);
	char input1[3] = "";
	scanf("%s", input1);
	most = max(max(a, b), c);
	least = min(min(a, b), c);
	mid = a + b + c - most - least;
	a = least;
	b = mid;
	c = most;
	if (input1[0] == *ch[0]) {
		if (input1[1] == *ch[1]) {
			printf("%d %d %d", a, b, c);
		}
		else if(input1[1] == *ch[2]){
			printf("%d %d %d", a, c, b);
		}
	}
	else if (input1[0] == *ch[1]) {
		if (input1[1] == *ch[0]) {
			printf("%d %d %d", b, a, c);
		}
		else if (input1[1] == *ch[2]) {
			printf("%d %d %d", b, c, a);
		}
	}
	else if (input1[0] == *ch[2]) {
		if (input1[1] == *ch[0]) {
			printf("%d %d %d", c, a, b);
		}
		else if (input1[1] == *ch[1]) {
			printf("%d %d %d", c, b, a);
		}
	}
	return 0;
}

实在困惑很长时间了

自己VS2022编译数据输入输出都没有问题

就到最后出现一个:

Run-Time Check Failure #2 - Stack around the variable 'input1' was corrupted.

实在搞不懂哪儿出问题了,字符串感觉自己也是半瓶水不满,根本没弄透彻

包括为什么

int main()
{
	char *b = "ABC";
	if (b == "ABC") {
		printf("Yes");
	}
	else {
		printf("No");
	}
	return 0;
}

输出就是Yes,而

int main()
{
	char b[] = "ABC";
	if (b == "ABC") {
		printf("Yes");
	}
	else {
		printf("No");
	}
	return 0;
}

输出就是No

如果要是第二种代码形式的话 if语句里b==什么才能使输出为Yes

求大佬解惑,实在感激不尽

2023/9/24 15:02
加载中...