Chinaunix

标题: LINUX C编程小问题 [打印本页]

作者: 风云    时间: 2004-07-30 15:47
标题: LINUX C编程小问题
#include <stdio.h>;
int main()
{
  FILE *fp;
  char filename[]="/tmp/test";
  char rdate[]=system("date +%Y%m%d -d '1 days ago'";    (此句GCC编译出错,system运行正确,就是这样赋值不对)
  fopen(fp,filename);
  fprintf(fp,"#!/bin/sh";
  fprintf(fp,"\n%s",rdate);
  fclose(fp);
}
  
请问如何赋值rdate为昨日日期并写出文件?
作者: idhly    时间: 2004-07-30 15:59
标题: LINUX C编程小问题
stdio.h?
作者: idhly    时间: 2004-07-30 16:06
标题: LINUX C编程小问题
fopen的用法也不对, 正确的应该是:

extern FILE *fopen (__const char *__restrict __filename,
                    __const char *__restrict __modes) __THROW;

这是在stdio.h里的原形描述
作者: 风云    时间: 2004-07-30 16:13
标题: LINUX C编程小问题
楼上的不是问题,去掉取日期的语句一切OK的。
#include <stdio.h>;
int main()
{
FILE *fp;
char filename[]="/tmp/test";
fopen(fp,filename);
fprintf(fp,"#!/bin/sh";
fclose(fp);
}
作者: idhly    时间: 2004-07-30 16:19
标题: LINUX C编程小问题
原帖由 "风云" 发表:
test";
fopen(fp,filename);
fprintf(fp,"#!/bin/sh";
fclose(fp);
}


你运行了吗?  

还有system函数的原形描述:


  1. extern int system (__const char *__command) __THROW;
复制代码


怎么返回值在你的程序里变成char *处理了?改用命令中管道符传输信息吧...
作者: 风云    时间: 2004-07-30 16:31
标题: LINUX C编程小问题
我运行的,正确:生成一个文件,文件内容是#!/bin/sh
你说的对,system()返回是int,那我要把system()运行
显示的结果写入指定的那个文件该怎么办呢?
在此先谢谢你的帮助。
作者: idhly    时间: 2004-07-30 16:51
标题: LINUX C编程小问题
我编译了你的程序是错误的, 而且你的程序本身都没有fopen是否成功的判断部分, 这对一个程序员来说是不可饶恕的错误哈...

好久不编C程序了, 所以只能给你一个思路, 那就是通过标准IO(STDIO得到参数'date +%Y%m%d -d '1 days ago'的结果, 然后通过管道符号:"|
把它传到C程序里(用fgets获得)然后写入文件中...

我编译可通过的基本程序为:


  1. #include <stdio.h>;

  2. int main(int argc, char *argv[])
  3. {

  4. FILE *fp;
  5. if((fp=fopen("test.txt","wt"))==NULL)
  6. {
  7.   printf("Cannot open file strike any key exit!\n");
  8.   exit(1);
  9. }
  10. fprintf(fp,"#!/bin/sh\n");
  11. fprintf(fp,"%s",argv[1]);
  12. fclose(fp);
  13. }
复制代码


运行时候用a.out `date +%Y%m%d -d '1 days ago'`
作者: idhly    时间: 2004-07-30 17:17
标题: LINUX C编程小问题
好了, 管道符版本也出炉了


  1. int main(void)
  2. {

  3. FILE *fp;
  4. char st[20];
  5. scanf("%s",st);
  6. if((fp=fopen("test.txt","wt"))==NULL)
  7. {
  8.   printf("Cannot open file strike any key exit!\n");
  9.   exit(1);
  10. }
  11. fprintf(fp,"#!/bin/sh\n");
  12. fprintf(fp,"%s",st);
  13. fclose(fp);
  14. }
复制代码


运行: date +%Y%m%d -d '1 days ago'| a.out




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2