当前位置: 技术问答>linux和unix
LINUX C 关于读取文件的问题,不知道哪里写错了,请高手指点,谢谢!
来源: 互联网 发布时间:2017-03-17
本文导语: #include #include #include struct stu { int no; char name[30]; float score; }; //打开文件 int openfile(const char* filename) { int fd; fd=open(filename, O_RDONLY); } //打印数据 void print(struct stu *record) { printf("%d,t%s,t%.2fn",record->no,record->name,re...
#include
#include
#include
struct stu
{
int no;
char name[30];
float score;
};
//打开文件
int openfile(const char* filename)
{
int fd;
fd=open(filename, O_RDONLY);
}
//打印数据
void print(struct stu *record)
{
printf("%d,t%s,t%.2fn",record->no,record->name,record->score);
}
main()
{
int fd;
fd=openfile("stu.dat");
if(fd==-1) printf("open err::%mn"), exit(-1);
struct stu record={0};
while( (read(fd,record,sizeof(struct stu)))!=0 )
{
print(record);
}
close(fd);
printf("finished!n");
}
[root@localhost]# gcc t3.c
t3.c: 在函数 ‘main’ 中:
t3.c:47: 错误:实参 1(属于 ‘print’)类型不兼容
我是初学者,怎么改正,请高手指教,谢谢!
|
print ->> printf
函数写错了,printf("%s",record); 而printf(record)不好,有漏洞。
printf("open err::%mn"), //? %m??
while(read(fd,record,sizeof(struct stu)))!=0) //应该用>0判断
建议C语言学好后,再学习操作系统,然后在学linux开发
函数写错了,printf("%s",record); 而printf(record)不好,有漏洞。
int openfile(const char* filename)
{
int fd;
fd=open(filename, O_RDONLY);
return fd;
}
printf("open err::%mn"), //? %m??
while(read(fd,record,sizeof(struct stu)))!=0) //应该用>0判断
建议C语言学好后,再学习操作系统,然后在学linux开发
|
int openfile(const char* filename)
{
int fd = -1;
fd=open(filename, O_RDONLY);
return fd;
}
|
2楼说的是,各种返回结果判断很重要。否则很多错误都不清楚情况。