linux怎么打开q7后缀的文件,关于linux下的文件操作!急!!!!!

下面我们学习一个实例,这个实例用来拷贝文件. 4 N- s: ?, ^5 S$ s/ ^' E; r

7 M7 j( I3 w  \

#include

; f9 f# q8 S8 Y( v5 B#include

* \# b, A$ X  v: |) X6 D#include 1 s/ ^0 \. e6 {

#include * F! g) o" J! b5 Z! A0 V

#include % F# l) A' D( l* U. ^9 K7 r& p

#include

4 n. [0 j6 t7 p- U3 j, D' o; H#include

8 g" n3 g5 }0 g( R. J5 Q% h4 u, Z1 f+ P2 y

#define BUFFER_SIZE 1024 - f7 m5 m8 t$ g  ^4 k1 p5 G9 S

! y% N3 F" N- q3 c3 _9 M5 y9 z! }) }int main(int argc,char **argv) # I5 q) R7 W( c% {1 @) t

{

) c3 s+ I3 f) y! _4 Y8 }) d4 ^3 R/ d0 j4 H3 X, C+ r' {

int from_fd,to_fd;

4 G, d$ ]. ^1 f2 ~- Eint bytes_read,bytes_write; 5 X. `: d+ h5 z( ]

char buffer[BUFFER_SIZE];

" {6 \8 ?3 H4 B4 Z- N% f  ]- C. Qchar *ptr; 6 P! Z) [, R$ ^3 S

' d0 _! \7 D' h5 i0 U$ b

if(argc!=3) , ~# H* [) V* m$ }2 Z

{

0 x' i2 C( f7 E  h( Ffprintf(stderr,"Usage:%s fromfile tofile a",argv[0]); ( m$ V5 q9 C/ A! W1 F! N' O( C6 `

exit(1); % R  V; ]8 B/ T( M% ^

}

6 I3 J% R3 J2 l0 r9 G3 V

4 G! v8 e6 h5 H' X& o/* 打开源文件 */ 2 d( U7 X" ?( l4 \( |/ E  H4 M1 M! t  C

% B1 J$ f9 S1 R6 H

if((from_fd=open(argv[1],O_RDONLY))==-1) - Z2 L) B* }( o) s' R

{

* @% J4 ]$ S# y. A1 h( p/ g1 A  {! Zfprintf(stderr,"Open %s Error:%s ",argv[1],strerror(errno));

/ ]5 b/ N7 _! v( v+ Texit(1); 6 R7 z$ m1 ~8 G% S% Y, ^  r

} 3 z7 r& u# n- K) j: R

4 C8 [( K" X8 [

/* 创建目的文件 */

1 A( U# y% E' W1 y) E' Q# M" d/ |+ D/ d0 t+ m& i7 S7 j

if((to_fd=open(argv[2],O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR))==-1)

. w1 e! t  \7 d0 X$ ^{ 6 J' [1 ~) q; n, G" C

fprintf(stderr,"Open %s Error:%s ",argv[2],strerror(errno));

: G$ @8 v2 R  `1 Cexit(1); ' U% Z2 Q+ `& G: m6 s

}

, [* F) v( w" L+ z2 {6 f8 `' O- i

/* 以下代码是一个经典的拷贝文件的代码 */ 9 Q7 j; _7 u+ ?( L# G* z$ {( g  o+ X& [

% P: d6 k# f7 Z2 d2 S+ N

while(bytes_read=read(from_fd,buffer,BUFFER_SIZE)) 9 x: f2 a0 J: P  l

{

, r/ \( k; Q3 {' D/* 一个致命的错误发生了 */

4 ~8 E5 j0 [# o" P: [$ D4 iif((bytes_read==-1)&&(errno!=EINTR)) break;

6 E, `7 z8 @3 \2 B- w/ welse if(bytes_read>0)

, [! }7 d/ q4 ^1 F{

% \* c( U, Y$ Optr=buffer; # o7 U' _! D2 Q8 J

while(bytes_write=write(to_fd,ptr,bytes_read))

# P) K: Z# Q* p1 v, S0 n{

# {, }; |6 X  [9 v( a/* 一个致命错误发生了 */

) I1 f4 @4 F$ j+ Q7 p+ x  x: Wif((bytes_write==-1)&&(errno!=EINTR))break; . h; @( {  M/ y

/* 写完了所有读的字节 */

, ^! _: X$ c- C9 C8 ?$ W" Yelse if(bytes_write==bytes_read) break; # o8 y  p* g2 }+ K# d- {

/* 只写了一部分,继续写 */

6 S0 J4 W. a8 x6 ~else if(bytes_write>0)

1 {5 o8 k' y2 l9 \* n{

+ v, ]8 W. I# D+ j- M" X2 Hptr+=bytes_write; 6 \; {2 O, e, A0 u; y) {% ^

bytes_read-=bytes_write; & A: Q: A& A3 `' y3 Q; T9 n" t

} 4 J" g4 J: x3 c+ l2 F

} ) a2 k7 d2 t; q

/* 写的时候发生的致命错误 */ # u0 _2 r% \: R) U

if(bytes_write==-1)break; % x! R1 P% _0 R$ C

6 t2 s' K$ ], R% \; k  y}

9 z0 B0 l' S: s5 _} , K9 l7 q9 ?2 y+ a0 t6 k- p4 B) c

close(from_fd); * O  W7 ]& D- g) P9 Q8 v: D

close(to_fd); * w2 r" Q" b  U* W7 u# |7 u4 M

exit(0);

* l' Z7 f0 d+ v1 ?( V- v} ; ~! D1 ?; g( w& P

" {6 V* W. c: O4 b, \

0 K* c7 p. G( f1 F' H+ U

( D& y- W. R5 h& E' d

请问这里main函数中的两个变量argc和argv[]分别代表什么?7 M2 r/ k/ z6 y& |

$ x+ ~" n' u! G. _% D还有if(argc!=3)

3 t/ z+ Y9 e% Y6 I{

6 H: {- K% D8 o3 C/ {1 S, Efprintf(stderr,"Usage:%s fromfile tofile a",argv[0]);

) [% _: ^0 L  ^4 Z" T5 t) V  Aexit(1);

. P0 C/ H3 A0 o}

! F3 L- A/ ^0 u# w  H) M2 v4 q是实现什么功能的?

4 Z3 A: _+ l- e7 m9 Q6 `

--------------------next---------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值