免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: luoweiqiao
打印 上一主题 下一主题

[函数] 求助!编程时OPEN函数的问题! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2004-05-10 00:08 |只看该作者

求助!编程时OPEN函数的问题!

文件名你没有保存到filename里 当然打不开了

论坛徽章:
0
12 [报告]
发表于 2004-05-10 01:12 |只看该作者

求助!编程时OPEN函数的问题!

不好意思,发上来的源代码打错了,不是BUF,是FILENAME。
我在测试时是用FILENAME。

论坛徽章:
0
13 [报告]
发表于 2004-05-10 08:43 |只看该作者

求助!编程时OPEN函数的问题!

先读后建是什么意思?
把完整代码粘一下,可以帮你测试一下

论坛徽章:
0
14 [报告]
发表于 2004-05-10 09:38 |只看该作者

求助!编程时OPEN函数的问题!

这个程式是根据用户需要创建文件名.
void main(void)
{
int fd;
char filename[80];
bzero(filename,sizeof(filename));
write(1,"filename:",9);
read(0,filename,sizeof(filename));
if(open(filename,O_CREAT,0700)<0(
{
printf("file cannot creat\n";
exit(1);
}
printf("file is creat\n";
exit(0);
}

很奇怪的是系统虽然显示MEMORY FAULT - CORE DUMPED 的信息,但是文件还是创建了.

论坛徽章:
0
15 [报告]
发表于 2004-05-10 09:58 |只看该作者

求助!编程时OPEN函数的问题!

文件虽然创建但是不能对文件进行操作,用LS 文件名不能显示这个文件.
在这个目录下用LS 文件名的第一个字符* 就可以显示这个文件.
如果将READ函数读取的这个串从第STRLEN(FILENAME)-1  开始到SIZEOF(FILENAME)-1 的字符赋予空格, 便不会出现MEMORY FAULT - CORE DUMPED . 这个提示,并且文件也创建了,和先前的一样文件还是不可以用 LS 文件名来显示这个文件名.

论坛徽章:
0
16 [报告]
发表于 2004-05-10 10:03 |只看该作者

求助!编程时OPEN函数的问题!

#include <sys/types.h>;
#include <sys/stat.h>;
#include <fcntl.h>;

int main(void)
{
int fd;
char filename[80];
bzero(filename,sizeof(filename));
write(1,"filename:",9);
read(0,filename,sizeof(filename));
if(open(filename,O_CREAT,0700)<0)
{
printf("file cannot creat\n";
exit(1);
}
printf("file is creat\n";
exit(0);
}


测试没有问题啊
你在看看
另:if(open(filename,O_CREAT,0700)<0(错了

论坛徽章:
0
17 [报告]
发表于 2004-05-10 16:40 |只看该作者

求助!编程时OPEN函数的问题!

那为什么我运行的时候会出现MEMORY FAULT - CORE DUMPED  的提示信息呢?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
18 [报告]
发表于 2004-05-10 16:46 |只看该作者

求助!编程时OPEN函数的问题!

原帖由 "luoweiqiao" 发表:
要加的话应该是加到字符串实际长度加+1的位置吧!
'\n',占用数组空间吗?

要加的话,应该是
filename[strlen(filename)-1] = 0x00;
才对。

你试试,问题应该出在这里了。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
19 [报告]
发表于 2004-05-10 16:56 |只看该作者

求助!编程时OPEN函数的问题!

  1. [mochou@WebAgent mochou]$ cat t1.c
  2. # include <stdio.h>;
  3. # include <string.h>;

  4. int main( void )
  5. {
  6.     int fd;
  7.     char filename[80];

  8.     memset( filename, 0x00, sizeof(filename) );
  9.     write(1,"filename:",9);
  10.     read(0,filename,sizeof(filename));

  11.     fprintf( stderr, "filename's len: [%d]\n", strlen(filename) );
  12.     fprintf( stderr, "last char: [%d]\n", filename[strlen(filename)-1] );

  13.     return 1;
  14. }
  15. [mochou@WebAgent mochou]$ cc -o t1 t1.c
  16. [mochou@WebAgent mochou]$ ./t1
  17. filename:abc
  18. filename's len: [4]
  19. last char: [10]
  20. [mochou@WebAgent mochou]$
复制代码

楼主你看看,我只输入了 abc 三个字母,但是 strlen 的结果是 4,
说明多了一个字符,
多出来的最后一个字符是 ASCII 码的 10,也就是换行符。

所以,我想应该是这个原因引起的。

论坛徽章:
0
20 [报告]
发表于 2004-05-10 17:16 |只看该作者

求助!编程时OPEN函数的问题!

MEMORY FAULT - CORE DUMPED

flw大哥运行程序,会看到这个错误吗?奇了怪了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP