当前位置:  技术问答>linux和unix

一个函数构思问题,大家指教。谢谢,初学。

    来源: 互联网  发布时间:2016-05-03

    本文导语:  想写个函数int wstr2file(char *name,void *p)  返回值可以变成别的类型的,要求实现通过name传进名字,p传进一个结构体指针,把p指向的结构体用sprintf之类的东西转换成一个带有对结构体内变量说明的格式后,写进name命...

想写个函数int wstr2file(char *name,void *p) 
返回值可以变成别的类型的,要求实现通过name传进名字,p传进一个结构体指针,把p指向的结构体用sprintf之类的东西转换成一个带有对结构体内变量说明的格式后,写进name命名的文件。


我写了一个:
typedef struct
{
   int a;
   int b;
   char c;
}st;

typedef struct
{
    st m;
    st n;
    int x;
    int y;
    int z;
}stru;


int wstr2file(char *name,void *p)
{
      int fd;
      char buf[30];

      fd = open(“/tmp/temp”,O_WRONLY|O_CREAT|O_APPEND );
      if(fd == -1) printf("open file errorn");
      sprintf(buf,"p->m.a is %d",p->m.a);
      write(fd,buf,sizeof(buf));
      memset(buf,0,sizeof(buf));
                   .
                   .
                   .
                   .
                   .
      sprintf(buf,"p->m.a is %d",p->n.c);
      write(fd,buf,sizeof(buf));
      memset(buf,0,sizeof(buf));
      sprintf(buf,"p->m.a is %d",p->x);
      write(fd,buf,sizeof(buf));
      memset(buf,0,sizeof(buf));
      sprintf(buf,"p->m.a is %d",p->y);
      write(fd,buf,sizeof(buf));
      memset(buf,0,sizeof(buf));
      sprintf(buf,"p->m.a is %d",p->z);
      write(fd,buf,sizeof(buf));
      memset(buf,0,sizeof(buf));
   
      return 1;

}


int main()
{   
     stru *sp;
    
     sp = (stru *)calloc(sizeof(sp),1);
     while(1)
     wstr2file("filelog",sp);
}



但是感觉我这个函数太笨,是否可以给出一个面向通用结构体的,并且不用从第一个变量到最后一个变量sprintf的。 


小弟初学,大家指教。谢谢了

|
int wstr2file(char *name,void *p) 

      int fd; 
      char buf[30]; 

      fd = open(name,O_WRONLY|O_CREAT|O_APPEND );     //不是传了文件名吗,把name参数用上撒
      if(fd == -1) printf("open file errorn"); 
      sprintf(buf,"p->m.a is %d",p->m.a); 
      write(fd,buf,sizeof(buf)); 
      memset(buf,0,sizeof(buf)); 
                  . 
                  . 
                  . 
                  . 
                  . 
      sprintf(buf,"p->m.a is %d",p->n.c); 
      write(fd,buf,sizeof(buf)); 
      memset(buf,0,sizeof(buf)); 
      sprintf(buf,"p->m.a is %d",p->x); 
      write(fd,buf,sizeof(buf)); 
      memset(buf,0,sizeof(buf)); 
      sprintf(buf,"p->m.a is %d",p->y); 
      write(fd,buf,sizeof(buf)); 
      memset(buf,0,sizeof(buf)); 
      sprintf(buf,"p->m.a is %d",p->z); 
      write(fd,buf,sizeof(buf)); 
      memset(buf,0,sizeof(buf));                         由于你要对每个结构体成员分别进行说明,我想,只能一个个处理了。
  
      return 1; 


|
up

|
如楼上所说,应该是不行的。
这个问题倒有点类似
http://topic.csdn.net/u/20081210/01/eb52a78a-0308-49cc-9bb1-0573d0fd8a51.html

问题的焦点是:
1)如果既想要遍历结构里的成员变量,又不要把结构里的成员变量显示的表示,如何做得到?
2)如果结构的变量的类型都是一样的,如int,那至少可以通过结构的偏移量获得变量的值,
但是类似sprintf(buf,"p->m.a is %d",p->m.a); 中的格式化字符串"p->m.a“, 如何能得到呢? 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 初学Unix,问:标准级函数,如fopen,fclose;系统级函数open,close,两者什么关系?(在一篇讲文件操作的文章中看到的)
  • 初学者问题:标准的sql里有处理日期的函数吗?
  • 初学者小问:read(file,buf,size)函数在读取文件时,file会不会自动增加?
  • 初学者的问题--关于构造函数
  • 初学:请教下linux编程时怎样方便查找函数原型和结构体的
  • APUE初学者:请问dup,dup2函数可以用来干什么?有什么好处?
  • 初学shell编程_通讯录程序_grep函数与sed函数
  • 初学者四个问题:开发环境,同步机制,查函数帮助,查数据结构
  • java中有没有这样的函数就是判断一个字符串里面是不是含有另外一个字符串!例如 abcdef 里面查找是不是含有de谢谢了~初学者
  • 初学者:一个函数参数的问题,请大家帮忙!
  • 初学操作系统,对于fork()函数有多处不理解,拜求大家赐教
  • linux socket sendto( )函数问题,初学,大家指点!
  • C++ Maps 成员 key_comp():返回比较元素key的函数
  • 请问:定义了2个函数,其中第一个函数要访问另外一个函数的变量,怎么处理阿?谢谢
  • C++ Maps 成员 value_comp():返回比较元素value的函数
  • 如果知道一个函数的地址或函数名,如何得到函数所在的文件名?
  • C++ MultiMaps 成员 key_comp():返回比较key的函数
  • java的数学函数在那个类中,如幂函数、指数、对数、双曲线函数等?
  • C++ MultiMaps 成员 value_comp():返回比较元素value的函数
  • 一个父类的构造函数的参数是(Applet applet),请问它的子类构造函数当中应怎样调用父类构造函数?
  • C++ STL Bitsets构造函数及成员函数解释及代码示例
  • 虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
  • C++ Strings(字符串) 成员 Constructors:构造函数,用于字符串初始化
  • 在内核的某个函数中,如何能知道是哪个用户空间的函数调用了它,以及这个用户空间函数所在的文件?
  • linux c 生成随机数srand函数和rand函数介绍及代码示例
  • 在dos下访问内存的MK_FP函数在linux下对应什么函数?int86()函数呢?
  • Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间
  • 一个静态库包含多个函数,应用程序连接了库中的某个函数,应用程序目标代码中是否还包含了该静态库中的其他函数代码?
  • Linux c++虚函数(virtual function)简单用法示例代码
  • Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3