编译时遇到no such file or directory

starecho147 2010-09-24 11:58:29
在学数据结构 想用STACK处理一个 符号匹配的问题

编译的时候总碰到说stack_link.h或者是fatal.h no such file or directory
但我确定把头文件都放到一个文件夹里了

还有就是 #include后面 用“ ” 和用< >效果不一样的 ms “”就可以 <> 就通不过..

我用的是C-Free

代码如下

stack_link.h

#ifndef _Stack_h
#define _Stack_h

struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode Stack;

int IsEmpty( Stack S );
Stack CreateStack( void );
void MakeEmpty( Stack S );
void Push( ElementType X, Stack S );
void Pop( Stack S );

#endif /* _Stack_h */

——————————————————————
fatal.h
#include <stdio.h>
#include <stdlib.h>

#define Error( Str ) FatalError( Str )
#define FatalError( Str ) fprintf( stderr, "%s\n", Str ), exit( 1 )

——————————————————————————————————


#include <stdio.h>
#include <stdlib.h>
#include <fatal.h>
#include "stack_link.h"

struct Node{
int a;
PtrToNode Next;
};

Stack CreateStack(void){
Stack S;

S = malloc(sizeof(struct Node));
if(S==NUll) FatalError("Out of Space!!");
MakeEmpty(S);
return S;
}

void MakeEmpty(Stack S){
if (S==NULL) Error("Must CreateStack first!");
else
while(!IsEmpty(S))
Pop(S);
}

int IsEmpty(Stack S)
return S->Next == Null;

void Pop(Stack S){
PtrToNode Fst;

if(IsEmpty(S)) Error("Empty Stack!!");
else{
Fst = S->Next;
S->Next= S->Next->Next;
free(Fst);
}
}

void Push(int x,Stack S){
PtrToNode Tmp;

Tmp = malloc(sizeof(struct Node));
if(Tmp == Null) FatalError("Out of space!!");
else{
Tmp->a = x;
Tmp->Next = S->Next;
S->Next = Tmp;
}
}

int main() /*Balancing Symbols*/
{
char c;

while((c=getchar())!='\n'){
if (c=='('||c=='['||c=='{')
Push(c,S);
else if(c==')'||c==']'||c=='}'){
if(IsEmpty(S)) printf("wrong order!");
else{ /*S is OK*/
if(Top(S)!=c) printf("wrong order!");
else
Pop(S);
}
}
}
if(!IsEmpty(S)) printf("wrong order!");
}
...全文
5073 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mao_pu_hua 2010-09-25
  • 打赏
  • 举报
回复 1
一般系统文件stdio.h之类的用<>,它是系统目录的。
但自己定义的头文件,需要用"",它先在当前目录找,之后还会在$PATH目录找,还会找系统目录
在linux下面系统目录为/usr/include。$PATH可以自己设定
赵4老师 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 starecho147 的回复:]
解决了...原来是我的NULL 很多地方写成了 NUll
[/Quote]
关于自己是否适合编程的很简单的测试:
在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案:
A里面有10处以上文字或标点错误
B里面没有文字或标点错误并敢为此跟人打赌
C里面没有文字或标点错误并且字体和排版完全与原稿一致
D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感

A不适合编程
B初级程序员
C高级程序员
D软件项目经理

如果想从A变成B的话,到我的资源http://zhao4zhong1.download.csdn.net/里面下载“适合程序员的键盘练习”
starecho147 2010-09-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chensanmu 的回复:]

sorry,我还是个新手,经常也报这个问题。不知如何是好。
[/Quote]

一起加油~
chensanmu 2010-09-24
  • 打赏
  • 举报
回复
sorry,我还是个新手,经常也报这个问题。不知如何是好。
starecho147 2010-09-24
  • 打赏
  • 举报
回复
哦 但我两个头文件都放在当前目录了 还是出错是怎么回事?
honghu069 2010-09-24
  • 打赏
  • 举报
回复
" "是从当前目录下查找文件,找不到再去安装目录下找
而<>直接去安装目录下找
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 starecho147 的回复:]

解决了...原来是我的NULL 很多地方写成了 NUll
[/Quote]

呵呵,那以后可得注意了!
starecho147 2010-09-24
  • 打赏
  • 举报
回复
解决了...原来是我的NULL 很多地方写成了 NUll
starecho147 2010-09-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bhdgx 的回复:]

自己写的头文件最好不要用#include <FILE.h>去引用,这样就要求你把文件放到系统头文件的目录下,你用的是C-Free,就把头文件拷贝到C-Free安装目录下的mingw32/Include目录,自己写的头文件最好是用#include "FILE.h" 去引用
[/Quote]

谢谢 但我现在就是放在自己的文件夹里 用#includes“FILE.h”引用 结果就出现很多错误 如NULL undeclared…… parse error等
Soulic 2010-09-24
  • 打赏
  • 举报
回复
自己写的头文件最好不要用#include <FILE.h>去引用,这样就要求你把文件放到系统头文件的目录下,你用的是C-Free,就把头文件拷贝到C-Free安装目录下的mingw32/Include目录,自己写的头文件最好是用#include "FILE.h" 去引用

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧