Error: Expression expected before 'i' in C

Error: Expression expected before 'i' in C

我编写了一个 C 代码来通过结构数组接受值,它要求主函数中的用户选择 he/she 是否要输入 char 或 int 值并通过插入排序对数组进行排序和打印出来,但我得到了 来自编译器的错误:{错误]:在 i

之前需要表达式
 #include<stdio.h>

 int n;

 typedef struct ls{
    int a;
    char l;
 }i[50],ls;

 int main(){

    printf("Enter the value\n");
    scanf("%d",&n);
    ls int1;
    
    int ans;
    printf("Main Menu\n");
    printf("1.)integer sort \n2.)Characrter sort\n");
    scanf("%d",&ans);
    if(ans==1){
        intSort(i.a);
    }
    else if(ans==2){
        charSort(i.l);
    }
    else{
        exit(0);
    }
    int ans1;
    printf("Would you like to print the array\n");
    scanf("%d",&ans1);
    if(ans==1 && ans1==1){
        display(i.a);
    }
    else{
        display(i.l);
    }
}
int intSort(int a[]){
    int j;
    printf("Enter the values into the array \n");
    for(j=0;j<n;j++){
        
        scanf("%d",&a[j]);
    }
    
    //  insertion sort function call
    insertionSort(a);
    return 1;
}

int charSort(char a[]){
    int j;
    printf("Enter the values into the array \n");
    for(j=0;j<n;j++){
        
        scanf(" %c",&a[j]);
    }
    insertionSort(a);
    return a;
}
int insertionSort(int a[]){
    int temp,i,j;
    
    for(i=1;i<n;i++){
        
        temp= a[i];
        j=i-1;
    }
    while(j>=0 && temp<a[j]){
        a[j+1]=a[j];
        j-=1;
    }
    a[j+1]=temp;

    return 1;
}
int display(int a[]){
    int i;
    printf("Sorted array:");
    for(i=0;i<n;i++){
        printf("%d ",a[i]);
    }
}

您定义的类型不正确。如果我理解正确的话,你想要一个 typedef ls 然后初始化一个你新定义的结构的数组。你会想做这样的事情:

#include <stdlib.h>
#include <stdio.h>

typedef struct ls {
  int a;
  char l;
} ls;

int main() {
        int i;
        ls *array_of_ls = malloc(50*sizeof(*array_of_ls));
        for (i = 0; i < 50; i++) {
                array_of_ls[i].a = i;
                array_of_ls[i].l = 65+i;
                printf("ls[%d] = (%d, %c)\n", i, array_of_ls[i].a, array_of_ls[i].l);
        }
        free(array_of_ls);
}

当然,请确保处理异常等。但这应该能让你继续。