linux c编程的问题

[复制链接]
查看11 | 回复10 | 2021-1-27 05:08:16 | 显示全部楼层 |阅读模式
//每隔一秒创建一个文件夹,名称为时+分
//在文件夹中每隔一秒创建一个文件,将时间信息写入文件中
#include
#include
#include
#include
#include
#include
#include
#include
#include
intcreat_dir(char*);//创建文件夹函数
intcreat_file(char*,char*,char*);//创建并写入函数
intcreat_dir(char*pathname)
{
DIR*p;
inttemp;//mkdir返回值
p=opendir(pathname);
if(p=NULL)
{
printf("打开文件夹失败,文件夹不存在\n");
temp=mkdir(pathname,0777);
if(temp==-1)
{
printf("创建文件失败\n");
return-1;
}
else
{
printf("创建文件夹成功\n");
return0;
}
}
else
{
printf("文件夹已存在\n");
return0;
}
}
intcreat_file(char*pathname,char*filename,char*writebuf)
{
inttemp;//chdir返回值
intfd;//文件标识符
inttemp_write;//open函数返回值
charwdir[100];//储存工作路径
temp=chdir(pathname);
if(temp==-1)
{
printf("切换工作路径失败\n");
return-1;
}
else
{
if((getcwd(wdir,100))==NULL)
{
printf("获取工作路径失败\n");
}
printf("工作路径为:%s\n",wdir);
fd=open(filename,O_RDWR|O_CREAT,S_IRWXU);
//以传入名字创建文件
if(fd==-1)
{
printf("创建文件失败\n");
return-1;
}
else
{
printf("创建文件成功\n");
temp_write=write(fd,writebuf,strlen(writebuf));
if(temp_write==-1)
{
printf("写入失败\n");
close(fd);
return-1;
}
else
{
printf("写入成功\n");
close(fd);
return0;
}
}
}
}
intmain()
{
inttemp_creat;//创建文件夹函数返回值
inttemp_file;//创建文件返回值
chardirname[10]="DIR";//目录名
charfilename[10]="File";//文件名
charwritebuf[15];//写入缓冲区
time_ttimetemp;//时间变量
structtm*time_str;//时间结构体
chartimebuf[3];//待连接入的时间信息
chartimebuf_2[3];
time(&timetemp);
time_str=gmtime(&timetemp);//存入结构体时间中
sprintf(timebuf_2,"%02d",time_str->tm_min);
strcat(dirname,timebuf_2);//文件夹名称加入时间信息
temp_creat=creat_dir(dirname);//调用创建文件夹函数
if(temp_creat==-1)//创建失败
{
return1;
}
else
{
sprintf(writebuf,"%s\n",ctime(&timetemp));//将时间信息加入到writebuf中
sprintf(timebuf,"%02d",time_str->tm_sec);
strcat(filename,timebuf);//文件名称加入时间信息
temp_file=creat_file(dirname,filename,writebuf);
//调用创建文件函数
if(temp_file==-1)//创建失败
{
return2;
}
else
{
return0;
}
}
}

运行结果是
文件夹已存在
切换工作路径失败
已放弃(核心转储)
我gdb调试了下打开文件夹那里明明文件夹不存在为什么返回的指针p不是NULL纠结了很久新手求大神指点


分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:08:16 | 显示全部楼层
先用管理员权限执行程序试看看,程序不一定有权限创建目录或文件的。
回复

使用道具 举报

千问 | 2021-1-27 05:08:16 | 显示全部楼层
HiFeng,
Inyour`scode:
if(p=NULL)
youmeantobe:
if(p==NULL)
回复

使用道具 举报

千问 | 2021-1-27 05:08:16 | 显示全部楼层
楼主现在这个问题解决了吗能否分享一下
回复

使用道具 举报

千问 | 2021-1-27 05:08:16 | 显示全部楼层
引用2楼bigPillow的回复:HiFeng,
Inyour`scode:
if(p=NULL)
youmeantobe:
if(p==NULL)

yesthanks
回复

使用道具 举报

千问 | 2021-1-27 05:08:16 | 显示全部楼层
引用3楼HITYM627的回复:楼主现在这个问题解决了吗能否分享一下
解决了就是楼上说的那样
回复

使用道具 举报

千问 | 2021-1-27 05:08:16 | 显示全部楼层
用shell写更简单吧
回复

使用道具 举报

千问 | 2021-1-27 05:08:16 | 显示全部楼层
这错误比较低级,但是是经常犯的
回复

使用道具 举报

千问 | 2021-1-27 05:08:16 | 显示全部楼层
if判断这样写if(NULL==p)这样可以防止比较符号写成赋值符号
回复

使用道具 举报

千问 | 2021-1-27 05:08:16 | 显示全部楼层
楼上的建议一看就是老手了

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行