免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1104 | 回复: 7
打印 上一主题 下一主题

LINUX C编程小问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-30 15:47 |只看该作者 |倒序浏览
#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为昨日日期并写出文件?

论坛徽章:
0
2 [报告]
发表于 2004-07-30 15:59 |只看该作者

LINUX C编程小问题

stdio.h?

论坛徽章:
0
3 [报告]
发表于 2004-07-30 16:06 |只看该作者

LINUX C编程小问题

fopen的用法也不对, 正确的应该是:

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

这是在stdio.h里的原形描述

论坛徽章:
0
4 [报告]
发表于 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);
}

论坛徽章:
0
5 [报告]
发表于 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 *处理了?改用命令中管道符传输信息吧...

论坛徽章:
0
6 [报告]
发表于 2004-07-30 16:31 |只看该作者

LINUX C编程小问题

我运行的,正确:生成一个文件,文件内容是#!/bin/sh
你说的对,system()返回是int,那我要把system()运行
显示的结果写入指定的那个文件该怎么办呢?
在此先谢谢你的帮助。

论坛徽章:
0
7 [报告]
发表于 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'`

论坛徽章:
0
8 [报告]
发表于 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP