为什么当我的name字符串可供存8个char值的时候会出现问题?
查看原帖
为什么当我的name字符串可供存8个char值的时候会出现问题?
310486
youngbilibili楼主2020/8/1 13:00
#include<iostream>
#include<math.h>
using namespace std;
int gra[1000][4] = { 0 };
char name[1000][8];//这里的这个8,在输出的时候会出现问题
int main()
{
	int count = 0, upl;
	cin >> upl;
	for (int n = 0; n < upl; n++) {
		cin >> name[n] >> gra[n][0] >> gra[n][1] >> gra[n][2];
	}
	for (int n = 0; n < upl - 1; n++) {
		for (int m = n + 1; m < upl; m++) {
			if (abs(gra[m][0] - gra[n][0]) <= 5 && abs(gra[m][1] - gra[n][1]) <= 5 && abs(gra[m][2] - gra[n][2]) <= 5 && abs(gra[m][0] - gra[n][0] + gra[m][1] - gra[n][1] + gra[m][2] - gra[n][2]) <= 10) {
				//count++;
				//grp(n, m, count);
				cout << name[n] << " " << name[m] << endl;
			}
		}
	}
}

输入:
12
amu 9 24 14
annsha 16 7 14
aootkw 10 25 16
aorgovug 15 12 21
apkayehu 5 25 12
aqplmz 17 8 16
arjlxz 23 20 15
arrgcarp 6 7 16
at 21 26 16
atc 25 25 12
atit 6 21 13
av 9 22 24
输出:
amu aootkw
amu apkayehuaqplmz//这里有问题
amu atit
annsha aqplmz
aootkw apkayehuaqplmz//这里有问题
aorgovugapkayehuaqplmz aqplmz//这里有问题
apkayehuaqplmz atit//这里有问题
arjlxz atc
at atc

看起来输出问题都是cout无法输出准确位数的name字符串


当我将字符串大小调整为name[1000][10]后,问题就解决了

输入:
12
amu 9 24 14
annsha 16 7 14
aootkw 10 25 16
aorgovug 15 12 21
apkayehu 5 25 12
aqplmz 17 8 16
arjlxz 23 20 15
arrgcarp 6 7 16
at 21 26 16
atc 25 25 12
atit 6 21 13
av 9 22 24
输出:
amu aootkw
amu apkayehu
amu atit
annsha aqplmz
aootkw apkayehu
aorgovug aqplmz
apkayehu atit
arjlxz atc
at atc

题目里面提到所有名字都是“不超过 8 个字符的字符串,没有空格”。但是为什么我规定字符串为8时会出现问题?

可能是我忽略了什么,还是说我漏掉了字符串里的某个知识点,还请各位大佬帮忙解惑

不知道说什么好,就感谢各位大大吧( ̄︶ ̄*))

2020/8/1 13:00
加载中...