标题:linux程序语法错误
只看楼主
jingzitakk66
Rank: 1
等 级:新手上路
帖 子:198
专家分:0
注 册:2009-5-1
结帖率:98.68%
已结贴  问题点数:20 回复次数:5 
linux程序语法错误
这个程序调试出现了一系列问题,不知道怎么更正语法错误啊
//head.h
1 #ifndef HEAD_H
      2 #define HEAD_H
      3 char *fgets_(char *,int,FILE *);
      4 #endif


//main.c
  1 #include "stdio.h"
      2 #include "head.h"
      3
      4 main()
      5
      6 {
      7     char *a[10];
      8     printf("%s",fets_(a,10,stdin));
      9 }
//fgets_.c
      1 #include"string.h"
      2 #include"head.h"
      3
      4 char *fgets_(char *dest,int num,FILE *fp)
      5 {
      6     int i;
      7     int ch;
      8
      9     for(i=0;i<num-1;i++)
     10         {
     11         ch=getc(fp);
     12         *(dest+num-1)='\n';
     13         if(ch!='/n')
     14         *(dest+i)=getc(fp);
     15         else return dest;
     16
     17         }
     18
     19         return dest;
     20
     21 }
     
gcc main.c fgets_.c head.h后出现下面错
[apple@localhost program]$ gcc main.c fgets_.c head.h
In file included from fgets_.c:2:
head.h:3: error: syntax error before "FILE"
fgets_.c:4: error: syntax error before "FILE"
fgets_.c: In function `fgets_':
fgets_.c:9: error: `num' undeclared (first use in this function)
fgets_.c:9: error: (Each undeclared identifier is reported only once
fgets_.c:9: error: for each function it appears in.)
fgets_.c:11: error: `fp' undeclared (first use in this function)
fgets_.c:12: error: `dest' undeclared (first use in this function)
fgets_.c:13:10: warning: multi-character character constant
head.h:3: error: syntax error before "FILE"
[apple@localhost program]$
搜索更多相关主题的帖子: linux 
2009-08-02 23:09
prankmoon
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:161
专家分:921
注 册:2009-7-21
得分:20 
以下是我写的三个代码文件,仅供参考:
程序代码:
//head.h

#ifndef HEAD_H
#define HEAD_H
#include <stdio.h>  // 增加了这一行,否则就无法声明形参FILE *fp
char *fgets_(char *dest, int num, FILE *fp);
#endif

程序代码:
//fgets_.c

#include <string.h>
#include "head.h"

char *fgets_(char *dest, int num, FILE *fp)
{
    int i;
    int ch;

    for(i=0; i<(num - 1); i++)
    {
        ch = getc(fp);
        *(dest + num - 1) = '\0';   // 你这里的意思是回车?但似乎 '\0'更合适
        
        if(ch != '\n')
        {
            *(dest + i) = ch;       // 修改了这行,应该更符合你的本意
        }
        else
        {
            return dest;
        }
    }

    return dest;
}

程序代码:
//main.c

#include <stdio.h>
#include "head.h"

int main(void)
{
    char a[20] = {0};   // 修改了这里,因为a是一个指向字符串的指针
    
    printf("%s\n", fgets_(a, sizeof(a), stdin));
    
    return 0;
}

输入:
hello world
输出:
hello world

不知道有没有误解你的意思。
2009-08-03 00:10
wxjeacen
Rank: 7Rank: 7Rank: 7
等 级:禁止访问
帖 子:1291
专家分:628
注 册:2009-3-22
得分:0 
回复 楼主 jingzitakk66
去学学makefile怎么写。

多文件编译都不会。

生命不熄,战斗不止.
2009-08-03 10:58
jingzitakk66
Rank: 1
等 级:新手上路
帖 子:198
专家分:0
注 册:2009-5-1
得分:0 
回复 3楼 wxjeacen
你简直不知所云,不解决问题请不要回帖.
2009-08-03 20:57
jingzitakk66
Rank: 1
等 级:新手上路
帖 子:198
专家分:0
注 册:2009-5-1
得分:0 
回复 楼主 jingzitakk66
非常感谢,第一次搞这个程序.
2009-08-03 21:17
wxjeacen
Rank: 7Rank: 7Rank: 7
等 级:禁止访问
帖 子:1291
专家分:628
注 册:2009-3-22
得分:0 
以下是引用jingzitakk66在2009-8-3 20:57的发言:

你简直不知所云,不解决问题请不要回帖.


无知者无畏

生命不熄,战斗不止.
2009-08-04 09:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-281379-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.975938 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved