如何解决进程在代码块中返回了-10737418190xC0000005
我一直在尝试使用c中的任何变量来解决多项式加法,因此在拆分
字符串,并在分配我的代码后将其分配给数组,并使其输出
Enter the number of equations : 1
Enter the 1 Equation : 6x^2+3y^2+3x^1
Substring 6x
Value 6x
i : 0 j : 0 k : 0
Substring 2
Value 2
i : 0 j : 0 k : 1
Substring 3y
Value 3y
i : 0 j : 1 k : 0
Substring 2
Value 2
i : 0 j : 1 k : 1
Substring 3x
Value 3x
i : 0 j : 2 k : 0
Substring 1
Value 1
i : 0 j : 2 k : 1
Process returned -1073741819 (0xC0000005) execution time : 3.963 s
Press any key to continue.
我的代码是
int no_of_equation;
printf("Enter the number of equations : ");
scanf("%d",&no_of_equation);
char equation_arr[no_of_equation][59];
for (int i = 0;i < no_of_equation; i++) {
printf("Enter the %d Equation : ",i+1);
scanf("%s",equation_arr[i]);
}
char *substr;
char coefficient_array[no_of_equation][10][2][6];
for (int i = 0;i < no_of_equation; i++) {
substr = strtok(equation_arr[i],"^+");
while(substr != NULL) {
for(int j = 0;j < 10; j++) {
for(int k = 0;k < 2;k++){
strcpy(coefficient_array[i][j][k],substr);
printf("Substring %s\n",substr);
printf("Value %s\n",coefficient_array[i][j][k]);
printf("i : %d j : %d k : %d\n",i,j,k);
substr = strtok(NULL,"^+");
}
}
}
}
解决方法
for (int k = 0; k < 2; k++) {
strcpy(coefficient_array[i][j][k],substr); // substr may be NULL here
printf("Substring %s\n",substr);
printf("Value %s\n",coefficient_array[i][j][k]);
printf("i : %d j : %d k : %d\n",i,j,k);
substr = strtok(NULL,"^+"); // substr may become NULL here
}
请参见上面的注释:当您在字符串末尾substr
变为NULL,并且在下一次迭代中,您尝试从NULL指针进行strcpy崩溃时,就会发生此问题。
您需要在for循环的结束条件中进行另一个测试:
for (int k = 0; k < 2 && substr != NULL; k++)
我建议您学习如何使用调试器。使用调试器,可以在几分钟内找到这种简单的错误。
,程序中存在一个严重问题,strtok
可能返回NULL
。
如果在参数中输入null,则strcpy
会崩溃。
int main ()
{
int no_of_equation;
printf("Enter the number of equations : ");
scanf("%d",&no_of_equation);
char equation_arr[no_of_equation][59];
for (int i = 0;i < no_of_equation; i++) {
printf("Enter the %d Equation : ",i+1);
scanf("%s",equation_arr[i]);
}
char *substr;
char coefficient_array[no_of_equation][10][2][6];
for (int i = 0;i < no_of_equation; i++) {
substr = strtok(equation_arr[i],"^+");
while(substr != NULL) {
for(int j = 0;j < 10; j++) {
for(int k = 0;k < 2;k++){
if (substr)
strcpy(coefficient_array[i][j][k],substr);
else
coefficient_array[i][j][k][0] = 0;
printf("Substring %s\n",substr);
printf("Value %s\n",coefficient_array[i][j][k]);
printf("i : %d j : %d k : %d\n",k);
substr = strtok(NULL,"^+");
}
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。