竞赛讨论区 > Capoo's Acronym Zero
头像
看老子不卷四你
发布于 2023-12-24 19:05
+ 关注

Capoo's Acronym Zero

为什么它编译不了,显示段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起;

什么原因引起的啊??感谢解疑

#include<stdio.h>
#include<list>
#include<string.h>
using namespace std;
struct dictionary {
	char str[1001];
	char sec[21];
};
struct sectary {
	int num=0;
	list<char*>rezults;
};
char* get_sec(struct dictionary n) {
	int nubmer=strlen(n.str);
	int n_sec=0;
	for (int i = 0; i < nubmer; i++) {
		if (n.str[i] <= 90 && n.str[i] >= 65) {
			n.sec[n_sec] = n.str[i];
			n_sec++;
		}
	}
	n.sec[n_sec] = '\0';
	return n.sec;
}
int main() {
	int dict, sect;
	list<dictionary>dicts;
	list<sectary>sects;
	scanf("%d %d",&dict,§);
	for (int i = 0; i < dict; i++) {
		dictionary one;
		scanf("%s",one.str,1001);
		strcpy(one.sec,get_sec(one));
		dicts.push_back(one);
	}
	list<dictionary>::iterator p;
	for (int i = 0; i < sect; i++) {
		char temp[21];
		sectary one;
		scanf("%s",temp,21);
		for (p=dicts.begin();p!=dicts.end(); p++) {
			if (strcmp(temp, p->sec)==0) {
				one.num++;
				one.rezults.push_back(p->str);
			}
		}
		sects.push_back(one);
	}
	list<sectary>::iterator q;
	for (q=sects.begin();q!=sects.end(); q++) {
		printf("%d\n",q->num);
		list<char*>::iterator r;
		for (r = q->rezults.begin(); r != q->rezults.end(); r++) {
			printf("%s\n",*r);
		}
		q->rezults.clear();
	}
	dicts.clear();
	sects.clear();
	return 0;
}

全部评论

(0) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐