C中的结构问题

时间:2011-11-30 21:18:11

标签: c gcc

任务:创建工人数据库。该计划还应该通过输出工人的信息 姓名和计算所有工人的平均工资。当我尝试编译此代码时

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

struct worker {
    char name[10];
    int salary;
};
int main (void);
    struct worker p1 = {"koko", 3400};
    printf ("name=%s,salary=%d,p1,name,p1,salary");
    return(0);
}

我得到了

./dz2.c:11:9: error: expected declaration specifiers or «...» before string constant
./dz2.c:12:1: error: expected identifier or «(» before «return»
./dz2.c:13:1: error: expected identifier or «(» before «}» token

我很感激解决这个问题。

6 个答案:

答案 0 :(得分:2)

从以下行;的末尾删除int main(void);,然后插入{

答案 1 :(得分:2)

int main (void);更改为:

int main (void) {

使用int main (void);声明原型,但必须打开括号才能启动函数的实际内容。

答案 2 :(得分:2)

你做了很多错事。

由于这是家庭作业,你应该学习东西,试试这些:

  • 从一个程序开始,该程序只是包含文件的骨架和一个空主函数。这样做会告诉您,您写了int main(void);错误。它应该是int main() {
  • 以printf函数调用开始,该调用仅输出您键入的数字。这应该表明您错误地执行了printf个参数。为什么你认为变量应该在字符串双引号内?一旦你确实在正确的位置有参数,为什么你认为有两次转换的printf(%s和%d)将使用四个参数?

总结:当您使用新代码获得语法错误时,请备份并撤消更改,直到您拥有编译的代码。然后编写一些新的代码,以便您可以确切地看到出错的地方。

另外,我建议使用最高级别的警告选项进行编译。那会告诉你printf语句错了。我相信这是Microsoft Visual Studio在调试模式下的默认设置。对于Linux或BSD上的GCC,您可以将-Wall -W添加到gcc命令。

答案 3 :(得分:1)

定义main()时出现语法错误。它需要一个开口大括号,而不是分号。

答案 4 :(得分:1)

结合其他人的提示:

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

struct worker {
    char name[10];
    int salary;
};

int main(int argc, const char *argv[])
{
    struct worker p1 = {"koko", 3400};
    printf ("name=%s,salary=%d\n",p1.name,p1.salary);
    return 0;
}

注意

  • p1.namep1.salary引用p1内的字段(类型为worker
  • main的声明已修复

答案 5 :(得分:0)

如果我错了,请原谅我,但看起来像你通常参加考试的有缺陷的来源。 错误的分号不是程序中唯一的错误。

如果我错了,请随意纠正我。