我对C编码非常陌生,我想知道为什么会这样崩溃?输入值并按回车键后,我的程序立即崩溃。我记得有时你会使用&在scanf行中有一个数组,有时你不会。所以,当我删除&它瞬间崩溃了。我不确定如何解决这个问题并希望得到帮助。
我想要完成的事情:
程序在我输入其他变量之前崩溃。我没有完成编码,但由于它一直在崩溃,我无法进一步。
int main () {
int ru[1000];
int read;
int nums;
int counts;
printf("Enter integers, press 0 to end user input \n");
while (nums>0) {
scanf("%d",&ru[nums]);
if (nums==0)
printf("%d ", ru[nums]);
}
system("pause>nul");
return 0;
}
答案 0 :(得分:1)
正如几个人已经指出的那样,你不会在代码中的任何一点为nums
分配值,而是在几个地方使用它。
你应该填充nums
并且当它大于零时(如果你想要包含负整数,这可能不等于零),将它的值存储到你的数组中。你可以使用另一个变量跟踪你在数组中的位置(我已经选择了你已经声明的read
),确保它首先被初始化为0.
while
循环终止后,nums
为零或您填充数组,然后打印出您收集的数字。
int main (void) {
int ru[1000];
int read=0;
int nums;
int counts;
printf("Enter integers, press 0 to end user input \n");
scanf("%d",&nums);
while ((nums>0)&&(read<1000)) {
ru[read++]=nums;
scanf("%d",&nums);
}
for(counts=0;counts<read;counts++) {
printf("%d ",ru[counts]);
}
printf("\n");
system("pause>nul");
return 0;
}
答案 1 :(得分:0)
您正在使用的scanf()作为以下原型:
int scanf(const char *format, ...);
你应该将指向缓冲区变量的de指针作为参数,但是你给出一个指向数组的指针(指向指针的指针)。:
scanf("%d",&ru[nums]);
您的问题的解决方案可能是:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int ru[1000];
int i = 0;
printf("Enter integers, press 0 to end user input \n");
do
{
scanf("%d",&ru[i]);
}while (ru[i]!= 0 && i++ < 1000);
for(i = 0; ru[i] != 0 ; i++)
printf("%d ", ru[i]);
return EXIT_SUCCESS;
}