为什么它编译不了,显示段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起;
什么原因引起的啊??感谢解疑
#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) 回帖