LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 552|回复: 2

新手提问,一个建立文件的程序

[复制链接]
发表于 2007-1-5 10:45:08 | 显示全部楼层 |阅读模式
参考一些unix和linux编程的书写了一个小程序,功能很简单,例如生成的可执行文件叫out,那么用命令 out -c hello 可以建立一个hello目录,并在该目录下建立一个叫hello的文件,向文件中写入hello world,用 out -d hello 可以删除生成的文件,原先用C语言写的,可以正常运行,现在我想把他改成C++的,就不能运行了。
C程序如下:
[PHP]#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

void creatfile (char *filename);
void delfile (char *filename);
void useage (void);

int
main (int argc, char *argv[])
{
  char option;

  char *filename = 0;

  while ((option = getopt (argc, argv, "d: c:")) != -1)
    switch (option)
      {
      case 'c':
        {
          filename = optarg;
          creatfile (filename);
        }
        break;
      case 'd':
        {
          filename = optarg;
          delfile (filename);
        }
        break;
      default:
        useage ();
        break;
      }
  return 0;
}

void
useage (void)
{
  printf ("use '-c' or '-d'\n");
  exit (1);
}

void
creatfile (char *filename)
{
  FILE *file;
  mkdir (filename, 0775);             /*创建一个名为filename,权限是775的目录*/
  chdir (filename);                            /*进入目录*/
  file = fopen (filename, "w");      /*建立文件*/
  printf ("file \"%s\" is created.\n", filename);
  fprintf (file, "hello world.");
  fclose (file);
}

void
delfile (char *filename)
{
  printf ("%s\n", filename);
  printf ("%s\n", getenv ("WD"));        /*当前目录 */
  chdir (filename);                                   /*改变目录 */
  printf ("%s\n", getenv ("WD"));        /*可以看到程序运行时改变工作目录不会改变系统环境变量 */
  unlink (filename);                                  /*删除文件*/
  chdir ("..");
  rmdir (filename);
  printf ("file \"%s\" is deleted.\n", filename);
}
[/PHP]
C++程序如下:
[PHP]#include<iostream>
#include<fstream>
#include<cstdlib>
#include<sys/stat.h>
#include<unistd.h>
using namespace std;

void creatfile (char *filename);
void delfile (char *filename);
void useage (void);

int
main (int argc, char *argv[])
{
  char option;

  char *filename = 0;

  while ((option = getopt (argc, argv, "d: c:")) != -1)
    switch (option)
      {
      case 'c':
        {
          filename = optarg;
          creatfile (filename);
        }
        break;
      case 'd':
        {
          filename = optarg;
          delfile (filename);
        }
        break;
      default:
        useage ();
        break;
      }
  return 0;
}

void
useage (void)
{
  cout<<"use '-c' or '-d'\n"<<endl;
  exit (13);
}

void
creatfile (char *filename)
{
  mkdir (filename, 0775);
  cout<<"make dir "<<filename<<endl;
  chdir (filename);
  cout<<"change to dir "<<filename<<endl;
  fstream file(filename);
  cout<<"file "<<filename<<" is created.\n"<<endl;;
  string str="hello world!";
  file<<str;
  file.close ();
}

void
delfile (char *filename)
{
  cout<<filename<<endl;
  cout<<getenv ("WD")<<endl;        /*可以看出程序运行时 */
  chdir (filename);                        /*改变目录      */
  cout<<getenv ("WD")<<endl;        /*不改变系统环境变量 */
  unlink (filename);
  chdir ("..");
  rmdir (filename);
  cout<<"file "<<filename<<" is deleted."<<endl;
}
[/PHP]
发表于 2007-1-5 11:51:50 | 显示全部楼层
修改一下这个:
fstream file(filename); 改为:
ofstream file(filename);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-5 14:33:11 | 显示全部楼层
原来如此,大意了
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表