执行错误-程序停止工作(C)
我需要编写一个简单的程序,从文件中读取数字,然后将这些数字存储在数组中。文件中的最后一个数字是0,因此程序知道何时读取执行错误-程序停止工作(C),c,C,我需要编写一个简单的程序,从文件中读取数字,然后将这些数字存储在数组中。文件中的最后一个数字是0,因此程序知道何时读取 当我执行程序时,DEC C++崩溃。我上网寻求解决方案,并相应地更改了设置,但这不起作用。我运行了我的其他程序,它运行得很好,这让我觉得代码有问题 有什么想法吗 #include <stdio.h> int main(){ int i, j=0, k; int values[20]; FILE*ptr; ptr = fopen(
当我执行程序时,DEC C++崩溃。我上网寻求解决方案,并相应地更改了设置,但这不起作用。我运行了我的其他程序,它运行得很好,这让我觉得代码有问题
有什么想法吗#include <stdio.h>
int main(){
int i, j=0, k;
int values[20];
FILE*ptr;
ptr = fopen("input.txt", "r");
fscanf(ptr, "%d", &i);
while (i=!0){
values[j]=i;
j++;
fscanf(ptr, "%d", &i);
}
for (k=0; k<20; k++)
printf("%d\n", values[k]);
fclose (ptr);
return 0;
}
#包括
int main(){
int i,j=0,k;
int值[20];
文件*ptr;
ptr=fopen(“input.txt”,“r”);
fscanf(ptr、%d、&i);
while(i=!0){
数值[j]=i;
j++;
fscanf(ptr、%d、&i);
}
对于(k=0;k另一个打字错误:
while (i=!0){
应该是:
while (i != 0){
您的代码将!0
赋值给i
,而不是将i
与0
进行比较!0
是1
,因此您有一个无限循环,并且您的写入超出了数组的边界
还请注意,如果文件中的数字超过20个,您将在数组外写入。如果文件中的数字少于20个,则打印值[k]
的循环将读取未初始化的数组项。代码有两个问题:
- 打开input.txt后,您没有检查错误
- 虽然i=!0在语法上是正确的,但它可能不符合您的要求!0是1,因此它与i=1相同,您将值1放入i中
要帮助您进行调试,请执行以下操作:
- 向代码中添加printf()语句,以验证是否达到某一行并检查变量的值
- 学习使用调试器
什么是“DEC++”?这是C++,不是C++。第一个<代码> fSCANF在 > 之前丢失了<代码>和代码>。我道歉,“DeV C++”。它是程序I的名称。use@Arc676直到他编辑后删除了那个打字错误。你确定文件中的数字不超过20个吗?