arrays - 进程在代码块中返回 -1073741819 (0xC0000005)
问题描述
我一直在尝试用 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++)
我建议你学习如何使用你的调试器。使用调试器可以在几分钟内找到这种简单的错误。
推荐阅读
- python - 在范围函数 Python 中使用自定义顺序
- python - python脚本中的ListRecommendationsRequest构造函数错误
- reactjs - 如何在不重新渲染站点或使用 MuiThemeProvider 的情况下更改材质 ui 元素的颜色
- python - 如何在 Firebase 中按降序排列数据 - Python
- python - 构造类类型的枚举值
- python - 递归查找列表的所有组合
- ajax - 如何在 onunload 函数中向我的服务器发送同步 ajax 请求
- c++ - 为什么 c++ DLL 中的多线程在构建时会出现错误 C3867?
- python - 有没有办法在 Django 中合并 2 个查询集并按它们的相关字段对它们进行排序?
- c# - 为什么 ElasticSearch Nest Query 中会出现转义反斜杠?