首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >strcpy在c++中出现分段错误

strcpy在c++中出现分段错误
EN

Stack Overflow用户
提问于 2015-10-30 01:53:07
回答 1查看 114关注 0票数 0

嗨,请帮我这个忙

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int classmatesize=0;
char **classmate1;
char **classmate2;    

void checkclassmates(){
        int i,j;
        for(i=0;i<classmatesize;i++){
            for(j=i+1;j<classmatesize;j++){
                if(strcmp(classmate1[i],classmate1[j])==0){
                    strcpy(classmate1[classmatesize],classmate2[i]);
                    strcpy(classmate2[classmatesize],classmate2[j]);
                    classmatesize++;
                }else if(strcmp(classmate1[i],classmate2[j])==0){
                    strcpy(classmate1[classmatesize],classmate2[i]);
                    strcpy(classmate2[classmatesize],classmate1[j]);
                    classmatesize++;                
                }else if(strcmp(classmate2[i],classmate2[j])==0){
                    strcpy(classmate1[classmatesize],classmate1[i]);
                    strcpy(classmate2[classmatesize],classmate1[j]);
                    classmatesize++;
                }else if(strcmp(classmate2[i],classmate1[j])==0){
                    strcpy(classmate1[classmatesize],classmate1[i]);
                    strcpy(classmate2[classmatesize],classmate2[j]);
                    classmatesize++;
                }
            }
        }
    }
int main(void) {
    int i;

    classmate1 = malloc(1000 * sizeof(char*));
    for ( i = 0; i < 1000 ; i++)
    classmate1[i] = malloc((1000) * sizeof(char));

    classmate2 = malloc(1000 * sizeof(char*));
    for ( i = 0; i < 1000 ; i++)
    classmate2[i] = malloc((1000) * sizeof(char));


    yyparse();
    checkclassmates();
    print_the_array();
    return 0;
}

我的yyparse();如果我通过注释checkclassmate函数来打印classmate1和classmate2,它的打印和clasematesize将打印为7

代码语言:javascript
复制
classmate1
[ sania  pawan  pandu  haldiram  manas  abhi  prince ]
classmate2
[ sam  pandu  madhur  arjun  jyoti  ash  sam ]

只有当我评论strcpy的指令时,问题才是strcpy,它的工作正常,它给出了分割错误。

我甚至尝试了sprintf而不是strcpy,但我还是搞不清楚。

EN

回答 1

Stack Overflow用户

发布于 2015-10-30 02:06:19

我的预感是这些线

代码语言:javascript
复制
                classmatesize++;

checkclassmates中是罪魁祸首。他们有四个人。因为您在循环中递增classmatesize,所以if语句的条件永远不会失败,并且您最终会访问超出界限的数组。

尝试删除这些行,看看问题是否仍然存在。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33421338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档