【发布时间】:2015-10-29 17:53:06
【问题描述】:
您好,请帮帮我
#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();如果我通过评论 checkclassmates 函数来打印 classmate1 和 classmate2,它的打印和 clasematesize 打印为 7
classmate1
[ sania pawan pandu haldiram manas abhi prince ]
classmate2
[ sam pandu madhur arjun jyoti ash sam ]
只有当我评论 strcpy 指令时,问题才与 strcpy 一起使用,它的工作正常,它给出了分段错误。
我什至尝试了 sprintf 而不是 strcpy 仍然无法弄清楚。
【问题讨论】:
-
yyparse是做什么的? -
向我们展示 yyparse(); 和 print_the_array();
-
@Michi 因为
classmate1是指向pointers 的指针,而不是指向chars 的指针。 -
@cad 我的错 :)。我没注意到。
-
如果输入是“a is classmateof b” .yyparse();将 a 添加到 classmate1 并将 b 添加到 classmate2 @cad