C_and_CPP 板


LINE

※ 引述《wansincere (阿洵)》之铭言: : 各位先进午安。 : 我是新手个人自学所以有些观念可能错很大 : 以下如果有太离谱的地方还请各位先进不吝指教,谢谢。 : 说明有点长,我的问题在最後。 : 我试着写一支UNIX下的开档程式,用C语言写 : main传入变数的地方是这样的: : (int argc, char *argv[]) : 格式是(程式名 档案来源 输出目录) : 作用是把来源档案复制一份到输出目录 : 但是实际执行的时候我不可能一个参数一个参数下 : 类似这样: $:> pname a.txt b.txt c.txt new : 应该这样: $:> pname *.txt new : 因为最後一个参数是输出的目录 : 所以我就把最後一个参数提出来: : int itdir = argc - 1; : mkdir(argv[itdir]); : 然後再用for回圈去抓argc的值: : for(a=1;a<=argc-2;a++){ : strcat(argv[itdir],argv[a]); : FILE *file2 = fopen(argv[itdir], "w"); 改成这样: int itdir=argc-1; char* tmp; FILE* input; FILE* output; mkdir(argv[itdir]); for(a=1;a<=argc-2;a++) { tmp=malloc(strlen(argv[itdir])+strlen(argv[a])+1); //配置记忆体 strcpy(tmp,argv[itdir]); //复制资料夹名称 strcat(tmp,"/"); //接上 "/" strcat(tmp,argv[a]); //把档名接上去 input=fopen(argv[a],"r"); //开启输入档 output=fopen(tmp,"w"); //开启输出档 . . . //资料复制 fclose(input); fclose(output); free(tmp); } ... 大致上长这样,有错误请指正 XDD : 这麽做有一个大问题 : 就是传出的档名会变这样: a.txt a.txtb.txt : 所以我就想从argv[itdir]下手 : 清空重抓不太实际,毕竟内容已经被改变了 : 所以我就想先把他指定给别的变数保留 : 回圈中再读出来,但是读出来之後记忆体位置没变内容却改变了 : 如果我的参数是./new/,回来变成_/n\ew/ : 可能不只如此,因为档案开得乱七八糟 : 试了多次不得要领我决定改变做法: : size_t length; : length = strlen(argv[itdir]); : 先算出目录参数的长度 : strncpy(argv[itdir],argv[itdir],length); : 再从回圈中把他拷贝回原始长度 : 但是我显然太天真了,strncpy没发挥任何作用 : 我想说可能是参数一参数二不能相同吧,但是从设一个tmp出来也一样 : 至此我还在继续研究 : 但有几个问题想请问各位先进 : 1.有没有办法直接读取argv的最後一个参数?不确定argv数量的时候有没有 : 比较正规的作法? : 2.fopen可以带入两个变数吗?(fopen(argv[itdir]/argv[a], "w");) :   类似这样的。 : 3.如果都不行的话,还请各位先进给我一点提示,谢谢(鞠躬) -- Coding 日志 & Linux 使用心得 Rinoworks Blog http://rinoworks.blogspot.com/ --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.121.197.32 ※ 编辑: Bencrie 来自: 140.121.197.32 (03/10 11:34)
1F:推 wansincere:原来如此,Bencrie前辈给了我很大的启示 03/10 11:43
2F:→ wansincere:实在是太感谢了,朝闻道午吃饭可矣^^" 03/10 11:45
3F:→ wansincere:听君一席话胜读十本书,您的回应就好像黑暗中的一盏明 03/10 11:47
4F:→ wansincere:我不知道该如何表达我的感谢,谢谢 03/10 11:48
5F:推 wansincere:我测试您的作法确实成功了 03/10 11:52
6F:→ weiyucsie:用sprintf看起来比较直觉XD 03/10 15:55
7F:→ weiyucsie:sprintf(tmp, "%s/%s", argv[itdir], argv[a]); 03/10 15:56
8F:→ Bencrie:忘记还有sprintf可以用 XDD 03/10 17:06
9F:推 wansincere:sprintf确实很好用(笔记) 03/11 16:17







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP