2011-11-30 68 views
0

任务:创建工人数据库。该计划还应该输出工人的信息 名称和统计所有工人的平均工资。当我尝试编译此代码C中的结构问题

#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 

我会为这个问题的解决表示感谢。

+2

格式化代码很好。代码不只是供电脑阅读 – sehe

回答

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声明固定
1

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

2

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

2

更改int main (void);到:

int main (void) { 

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

2

你做错了很多事情。

由于这是功课,你应该学习的东西,试试这些东西:

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

总之:当你用新的代码得到语法错误时,备份并取消你的改变,直到你有编译的代码。然后写一小段新的代码,以便您可以确切地看到错误的位置。

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

0

请原谅我,如果我错了,但看起来像你通常会在考试中得到一个马车来源。 错误的分号并不是程序中唯一的错误。

如果我错了,随时纠正我。