首页 > 解决方案 > 错误:在 '{' 标记之前应为 ';'、',' 或 ')'

问题描述

我正在尝试用 gcc 编译一个创建随机整数列表的代码,并对其进行排序。但我收到这些错误:

main.c:8:1: error: expected ‘;’, ‘,’ or ‘)’ before ‘{’ token
    8 | {
      | ^
tri.c:8:1: error: expected ‘;’, ‘,’ or ‘)’ before ‘{’ token
    8 | {
      | ^

我的第一个文件 main.c 包含:

#include <stdio.h>
#include <stdlib.h>
#include "tri.h"
#include "annexe.h"


int main(void)
{
    int *T;
    int n,d,k;
    char e;
    do
    {
        Saisir_n1(n);
        trait();
        T=CreaTablD(n);
        AffichageD(T,n);
        do
        {
            printf("\nChoisir entre le tri par insertion (1) et le tri par selection (2) : ");
            scanf("%d",&d);
        }while(d!=1 && d!=2);
        do
        {
            printf("\nChoisir entre un tri par ordre décroissant (d) et un tri par ordre croissant (c) : ");
            scanf("%c", &e);
        }while(e!='c' && e!='d');
        trait();
        if (d==1)
            Tri_Insertion(T,n,e);
        else
            Tri_Selection(T,n,e);
        AffichageD(T,n);
        free(T);
        do
        {
            printf("\nVoulez-vous recommencer ?\nOui(1)\tNon(0) : ");
            scanf("%d"&k);
        }while(k!=1 && k!=0);
    }while(k==1);
    return(0);
}

我的第二个文件 tri.c 包含:

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



void Tri_Insertion(int *T, int n, char choix)
{
    int cle,j;
    if (choix!='c' && choix!='d')
    {
        printf("\nErreur dans le choix des paramètres\n");
        return;
    }
    for (int i=1; i<n;i++)
    {
        cle=*(T+i);
        j=i-1
        if (choix=='c')
        {
            while (j>0 && *(T+j)>cle)
            {
                *(T+j+1)=*(T+i);
                j--;
            }
        }
        else 
        {
            while (j>0 && *(T+j)<cle)
                {
                    *(T+j+1)=*(T+i);
                    j--;
                }
        }
        *(T+j+1)=cle;
    }
}

void Tri_Selection(int *T, int n, char choix)
{
    int ie,e;
    if (choix!='c' && choix!='d')
    {
        printf("\nErreur dans le choix des paramètres\n");
        return;
    }
    if (choix=='c')
    {
        for (int i=0; i<n; i++)
        {
            PlusPetitD(T,ie,e,0,n);
            if (ie!=i)
            {
                permutationD(T+i,T+ie);
            }
        }
    }
    else
    {
        for (int i=0; i<n; i++)
        {
            PlusGrandD(T,ie,e,0,n);
            if (ie!=i)
            {
                permutationD(T+i,T+ie);
            }
        }
    }
}

Annexe.c 是一个我很确定没有问题的文件,因为它可以与其他文件一起使用。我检查了所有的“}”和“{”,所有的“;” 没有人失踪。

谢谢您的帮助。

标签: c

解决方案


几乎可以肯定它在您的 Tri_Insertion() 函数中-您有以下未终止的行,这可能会引发编译器错误(它似乎大约是您的 tri.c 文件的第 8 行:

    j=i-1
    if (choix=='c')
    {

而应该是:

    j=i-1;
    if (choix=='c')
    {

推荐阅读