c - 错误:在 '{' 标记之前应为 ';'、',' 或 ')'
问题描述
我正在尝试用 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 是一个我很确定没有问题的文件,因为它可以与其他文件一起使用。我检查了所有的“}”和“{”,所有的“;” 没有人失踪。
谢谢您的帮助。
解决方案
几乎可以肯定它在您的 Tri_Insertion() 函数中-您有以下未终止的行,这可能会引发编译器错误(它似乎大约是您的 tri.c 文件的第 8 行:
j=i-1
if (choix=='c')
{
而应该是:
j=i-1;
if (choix=='c')
{
推荐阅读
- three.js - 为什么 Three.js 几何会因大量数字而失去精度?
- react-native - 构建 Android 时出现 react-native-view 错误
- docker - Docker 容器在调用时立即退出
- c++ - 对于语句c ++,队列的大小重置为0
- ios - 无法按要求的顺序显示标签栏图标
- java - 如何在 power mockito 中模拟生成的对象及其属性
- javascript - Highchart 图例对齐
- angular - 角度刷新令牌拦截器
- ios - 在 ViewController 的顶部显示一条消息
- apache-spark - 如何增加纱线上火花作业的容错性?作业因抢占过多而失败?