我有一个关于 C 的小任务,但我无法接缝来填充我为其分配内存的数组。代码是这样的..
#include<stdio.h>
#include<stdlib.h>
int main(){
int *x, *y, n, m, i;
printf("Enter lenght of arrays x and y (separated by space): ");
scanf("%d%d", &n, &m); fflush(stdin);
if (x = (int*)malloc(sizeof(int) * n) == NULL){
fprintf(stderr, "Error!n");
exit(1);
}
if (y = (int*)malloc(sizeof(int) * m) == NULL){
fprintf(stderr, "Error!n");
exit(1);
}
printf("Enter %d values for X array (separated by space) ", n);
for (i = 0; i < n; i++)
scanf("%d", x + i);
fflush(stdin);
printf("Enter %d values for Y array (separated by space): ", m);
for (i = 0; i < m; i++)
scanf("%d", y + i);
} //the two for's were originally in a function, I tried using the code like this as well
return 0;
}
我也尝试运行scanf("%d",x[i]);但没有任何效果。每次我在输入 X 数组后按 Enter 时,程序都会崩溃。顺便说一下,最初没有 fflush(stdin),我添加了它们,因为我认为输入将 \0 作为值之一并产生了错误。
感谢您的阅读! :)
代码有一堆放错位置的大括号和括号,尤其是在 if 语句中。 在进行比较之前,您必须将作业括在括号中,否则它们会被错误分配。 试试这个,它编译并为我工作:
#include<stdio.h>
#include<stdlib.h>
int main(){
int *x, *y, n, m, i;
printf("Enter lenght of arrays x and y (separated by space): ");
scanf("%d%d", &n, &m);
if ((x = (int*)malloc(sizeof(int) * n)) == NULL){
fprintf(stderr, "Error!n");
exit(1);
}
if ((y = (int*)malloc(sizeof(int) * m)) == NULL){
fprintf(stderr, "Error!n");
exit(1);
}
printf("Enter %d values for X array (separated by space) ", n);
for (i = 0; i < n; i++)
scanf("%d", x + i);
printf("Enter %d values for Y array (separated by space): ", m);
for (i = 0; i < m; i++)
scanf("%d", y + i);
//the two for's were originally in a function, I tried using the code like this as well
return 0;
}
就像其他人说的,不要使用fflush(stdin)
使用 fflush(stdin)
可能会导致崩溃,因为它在标准 C 中是未定义的行为。
看看这个答案 fflush(stdin) 在 c 编程中的用途是什么
我尝试使用 Visual Studio 2013 编译程序,但在使用 malloc 的行中出现 2 个错误:错误 C2440:"=":无法从"布尔值"转换为"整数 *"在我修复了两条线之后
if ((x = (int*)malloc(sizeof(int) * n)) == NULL){
或
if (x = (int*)malloc(sizeof(int) * n)){
该程序运行没有任何问题。
我不明白为什么你可以编译代码,但它执行以下操作:
compare (int*)malloc(sizeof(int) * n) == 空结果为假现在设置 y = false,y 不指向分配的数组。