#define N 500 错误:预期的标识符或 '(' 在数字之前

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)

Mik*_*CAT 5

#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)