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

哈利勒·比格塔斯(Khalil Bigtas)

项目:源到目的地票价矩阵

语言: C.

理由:这是用于学校练习。我的输出已经过去了一天,所有的问题是这种代码行,我不知道问题是什么。

目标:制作一个从列表中分别获取源节点,目标节点和成本值的程序。处理完整个列表后,程序应询问用户他/她希望看到哪个节点。当用户输入节点号时,程序应输出该节点可能的目的地及其各自成本的列表。该程序应尽可能使用最小的内存(因此在数组上使用指针)。

范围:指针和结构。

代码中的问题: 这些是变量

int nodes, edges, src, dst, cst, loop=0, temp=0;

节点用于表示不同节点的数量。边是连接数。Src表示源节点的编号,dst表示目的节点的编号,cst表示它们的相应成本。循环是一个计数器,用于指示程序将扫描文件的时间。Temp是使代码更易于阅读的值持有者。

这是结构

typedef struct path {
    int num;
    int *cost;
    int *neighbors;
}path;

这是问题所在

fscanf (file, "%d %d", &nodes, &edges);

这将从文件的第一行获取节点和连接的数量。

printf("%d %d\n", nodes, edges);
path list[25000]={[0 ... 24999]{.num=0}};

通常,我不应该这样做。大小应取决于文件开头的节点数,但我认为问题出在表不是数组。这实际上是“最小内存”部分的折衷方案。如果有人可以改善这一点,我将非常有义务。

path * listp;
listp=&list;
puts("Processing data...");
while (loop<edges)
{
   fscanf (file, "%d %d %d", &src, &dst, &cst); 

这就是从文件列表中获取值的原因。(listp + src)-> num ++; (listp + dst)-> num ++; 每当我在列表中遇到连接数时,这将增加源节点和目标节点上的连接数。

realloc((listp+src)->cost, (listp+src)->num);
realloc((listp+src)->neighbors, (listp+src)->num);

这是为了增加成本和邻居可用的内存量,因此我可以存储更多的值。我在这里没有遇到任何错误,但是我不确定自己是否做对了。如果不是,请通知我。

temp=((listp+src)->num)-1;

这是为了使代码更明显。

(listp+src)->(cost+temp)=&cst;
(listp+src)->(neighbors+temp)=&dst;

这个。这是出现“((')令牌”错误之前的预期标识符)的地方。我真的不知道我在这里做错了什么。请帮助我:(

realloc((listp+dst)->cost, (listp+dst)->num);
realloc((listp+dst)->neighbors, (listp+dst)->num);
temp=((listp+dst)->num)-1;
(listp+dst)->(cost+temp)=&cst;
(listp+dst)->(neighbors+temp)=&src;
loop++;
}

基本上是漂洗然后对目标节点重复。

因此,我唯一的问题是最要强调的问题。我不知道我在做什么错。我认为我的代码也可能存在其他错误,但是到目前为止,编译器尚未向我发出警告。如果有人发现任何其他可能的错误,也可以指出对我有很大帮助。谢谢,麻烦您了。

埃格洛格

(listp+dst)->(cost+temp)在语法上是无效的:编译器试图告诉您,它希望使用标识符作为函数的指针,因此它(listp+dst)->foo(cost+temp)成为格式正确的表达式。

因此,如果我正确理解了您想做什么,则应该使用(*listp)[dst].cost[temp]或者,如果您确实更喜欢指针算术((listp+dst)->cost+tmp),请注意括号中的更改。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

预期标识符令牌'('

来自分类Dev

空指针、隔离标识符等

来自分类Dev

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

来自分类Dev

未声明的标识符(newGame)-用作参数的指针

来自分类Dev

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

来自分类Dev

预期的标识符

来自分类Dev

预期标识符

来自分类Dev

预期的标识符或'('

来自分类Dev

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

来自分类Dev

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

来自分类Dev

数字常量 ATMEGA 之前的预期标识符或 '('

来自分类Dev

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

来自分类Dev

C标识符中的指针+结构+函数未定义

来自分类Dev

使用上下文获取Drawable的标识符会导致Null指针异常

来自分类Dev

Printf%X标识符-带有指针的怪异行为

来自分类Dev

错误:预期标识符

来自分类Dev

预期的标识符或(错误

来自分类Dev

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

来自分类Dev

“预期的标识符”错误?

来自分类Dev

resignFirstResponder预期标识符

来自分类Dev

使用函数返回指向函数的指针时出现未声明的标识符错误(Visual Studio上为C ++)

来自分类Dev

C ++错误:IntilliSense标识符“ track”未定义-“可能未初始化的本地指针变量“ track””

来自分类Dev

释放之前的临时指针?

来自分类Dev

ZBar库构建因Android NDK而失败(预期标识符或“。”之前的“(”))

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

在 gcc 中编译时出错,预期标识符 '(' 在 'double' 之前

来自分类Dev

预期标识符或')'目标C

Related 相关文章

  1. 1

    预期标识符令牌'('

  2. 2

    空指针、隔离标识符等

  3. 3

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

  4. 4

    未声明的标识符(newGame)-用作参数的指针

  5. 5

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

  6. 6

    预期的标识符

  7. 7

    预期标识符

  8. 8

    预期的标识符或'('

  9. 9

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

  10. 10

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

  11. 11

    数字常量 ATMEGA 之前的预期标识符或 '('

  12. 12

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

  13. 13

    C标识符中的指针+结构+函数未定义

  14. 14

    使用上下文获取Drawable的标识符会导致Null指针异常

  15. 15

    Printf%X标识符-带有指针的怪异行为

  16. 16

    错误:预期标识符

  17. 17

    预期的标识符或(错误

  18. 18

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

  19. 19

    “预期的标识符”错误?

  20. 20

    resignFirstResponder预期标识符

  21. 21

    使用函数返回指向函数的指针时出现未声明的标识符错误(Visual Studio上为C ++)

  22. 22

    C ++错误:IntilliSense标识符“ track”未定义-“可能未初始化的本地指针变量“ track””

  23. 23

    释放之前的临时指针?

  24. 24

    ZBar库构建因Android NDK而失败(预期标识符或“。”之前的“(”))

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

    在 gcc 中编译时出错,预期标识符 '(' 在 'double' 之前

  29. 29

    预期标识符或')'目标C

热门标签

归档