Mih*_*nir 0 c pointers runtime-error
我正在尝试使用指针对数组进行排序,但出现此错误:预期标识符或数字之前的“(”这是我的代码:(用 C 编程)
#include <stdio.h>
#define N 500
void sort(int *v, int n){
int i, j, temp;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (*(v + j) < *(v + i)) {
temp = *(v + i);
*(v + i) = *(v + j);
*(v + j) = temp;
}
}
}
for (i = 0; i < n; i++)
printf("%d ", *(v + i));
}
int main()
{
int N;
int v[N];
printf("elements:");
scanf("%d", v);
sort(v, N);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
#define N 500
意思是“请N
将此行之后的任何标记替换为500
”,因此您不能N
用作变量名。
你应该int N;
从你的main()
函数中删除。
也scanf("%d", v);
将只读取第一个元素,而不是所有元素。您应该使用循环来读取所有元素。
下面是这个循环的一个例子:
for (int i = 0; i < N; i++)
{
if (scanf("%d", &v[i]) != 1)
{
fputs("read error\n", stderr);
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)