如何在';'之前固定预期的标识符 令牌错误

奥古赞·约瑟夫·阿斯拉纳尔普

我是初学者程序员。我想创建一个小型数据库,并从中选择满足某些要求。它包含一些东西的定义,因此看起来很长,但事实并非如此。我认为就像有对象一样,我们向其添加Thin,然后比较其属性。C是否适合此任务。

#include<stdio.h>

typedef struct{
    char isim;
    int adet;
    int odunc_alinma_sayisi;
    int sayfa;
    char yazar;
}kitap_ozellikleri;

kitap_ozellikleri a;
kitap_ozellikleri c;
kitap_ozellikleri y;
kitap_ozellikleri e;
kitap_ozellikleri t;
kitap_ozellikleri k;

/*int range(int maks){
    if(maks==1) {
        return 1;
    }
    int sayilar[maks];
    sayilar[maks-1] = maks;
    sayilar[maks-2] = range(maks-1); 
    return sayilar[];
}
*/
    void ozellik_tanimla(){
        a.adet = 50;
        a.isim = 'a';
        a.odunc_alinma_sayisi = 30;
        a.sayfa = 280;
        a.yazar = 'e';

        c.adet = 82;
        c.isim = 'c';
        c.odunc_alinma_sayisi = 88;
        c.sayfa = 150;
        c.yazar = 'g';

        y.adet = 99;
        y.isim = 'y';
        y.odunc_alinma_sayisi = 123;
        y.sayfa = 119;
        y.yazar = 'k';

        e.adet = 53;
        e.isim = 'e';
        e.odunc_alinma_sayisi = 33;
        e.sayfa = 268;
        e.yazar = 'r';

        t.adet = 24;
        t.isim = 't';
        t.odunc_alinma_sayisi = 42;
        t.sayfa = 159;
        t.yazar = 'o';

        k.adet = 55;
        k.isim = 'k';
        k.odunc_alinma_sayisi = 110;
        k.sayfa = 296;
        k.yazar = 'o';
    }


    int main(){
        ozellik_tanimla();  
        char liste[6] = {'a','c','y','e','t','k'};
        char yazar_liste[6] = {'e','g','k','r','o','o'};
        int n = 0;
        for(n=0;n<6;n++){
            int z = 0;
            for(z=0;z<6;z++){
                if(yazar_liste[n]==yazar_liste[z]){
                    kitap_ozellikleri gecici1 = yazar_liste[n]-> ;
                    kitap_ozellikleri gecici2 =  yazar_liste[z]->;
                    gecici1.sayfa += gecici2.sayfa;
                }
            }
        }

return 0;
    }

我想了解这个错误是什么以及为什么会发生?

landru27

欢迎使用堆栈溢出。

我想我可以从对问题和其他答案的评论中识别出您的意图,并且我相信您想要的核心循环更像是这样:

kitap_ozellikleri gecici1;
kitap_ozellikleri liste[6] = {a, c, y, e, t, k};  // no 'quotes'
char yazar_liste[6] = {'e', 'g', 'k', 'r', 'o', 'o'};
for(n=0; n<6; n++) {
    for(z=0; z<6; z++) {
        if(yazar_liste[n] == liste[z].yazar){
            gecici1.sayfa += liste[z].sayfa;
        }
    }
}

您知道为什么我更改liste为akitap_ozellikleri[]并删除该''数组成员周围的引号吗?

这会进行编译(在添加了类似的开销之后int n, z;),但是按原样计算,它会计算中列出的所有作者编写的总页数yazar_liste[]但是,它还会对作者“ o”进行双重计数,因为该作者在中被列出两次yazar_liste[]

这是完整版,其中包含来自各种评论的建议,可打印出每位作者的计数:

#include<stdio.h>

typedef struct{
    char isim;
    int adet;
    int odunc_alinma_sayisi;
    int sayfa;
    char yazar;
}kitap_ozellikleri;

kitap_ozellikleri a = { 'a', 50, 30,  280, 'e' };
kitap_ozellikleri c = { 'c', 82, 88,  150, 'g' };
kitap_ozellikleri y = { 'y', 99, 123, 119, 'k' };
kitap_ozellikleri e = { 'e', 53, 33,  268, 'r' };
kitap_ozellikleri t = { 't', 24, 42,  159, 'o' };
kitap_ozellikleri k = { 'k', 55, 110, 296, 'o' };

int main(){
    int n, z, tot;

    kitap_ozellikleri liste[6] = {a, c, y, e, t, k};  // no 'quotes'
    char yazar_liste[6] = {'e', 'g', 'k', 'r', 'o'};
    for(n=0; n<5; n++) {
        tot = 0;
        for(z=0; z<6; z++) {
            if(yazar_liste[n] == liste[z].yazar){
                tot += liste[z].sayfa;
            }
        }
        printf("total pages for sayfa %c is : %d\n", yazar_liste[n], tot);
    }

    return 0;
}

输出

total pages for sayfa e is : 280
total pages for sayfa g is : 150
total pages for sayfa k is : 119
total pages for sayfa r is : 268
total pages for sayfa o is : 455

存储按作者计数(例如,供程序稍后使用),您需要引入一种跟踪多个计数器的方法。我将其留给您练习;但当然,如果您在尝试后仍有疑问,请随时提出另一个单独的SO问题,详细说明您尝试过的内容,结果以及预期的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

指针:“'('令牌之前的预期标识符”

错误:“ _ Bool”之前的预期标识符

错误:“模板”之前的预期标识符

如何修复预期标识符错误C语言

如何解决预期的标识符错误?

C中的链表,如何修复预期的标识符错误?

找不到我的错误!错误:“(”令牌之前的预期标识符

预期标识符令牌'('

CLion,CMSIS和错误:“预期的标识符或'__asm'之前的'('”

C - “错误:预期标识符或 '(' 在 '[' 标记之前”

预期的标识符或(错误

预期的标识符或“(”错误

“预期的标识符”错误?

如何解决抖动中的预期标识符和':'预期错误?

错误:预期的标识符或'。'标记前的'('

错误:预期的标识符或'}'标记前的'('

收到“错误:预期的标识符或'('”

获取标识符预期错误

错误:编译时预期的标识符

编译 64 位时 pthread.h 上的“错误:预期标识符或 '(' 之前的 '{' 标记”

编译C程序时出现“错误:预期标识符或'('在'float'之前'”)

生成的c文件中的“错误:数字常量之前的预期标识符”

如何声明ArrayList?(预期标识符)

main.c:7:1错误:预期标识符或'{'令牌前的'('

错误:“:”令牌之前的预期“)”

错误:“&”令牌之前的预期“)”

不断收到“预期的标识符”和“预期的”错误消息

错误C2760:语法错误:意外的令牌'标识符',预期为';' 在地图迭代器上

令牌“类”的语法错误,应使用标识符