发新话题
打印

好久没有写纯粹的基于命令行的程序了,结果这么简单的问题就给我难住了。

好久没有写纯粹的基于命令行的程序了,结果这么简单的问题就给我难住了。

问题是这样的:' d9 Q+ m& {6 g
我的程序从终端获取用户的输入,用户的输入有可能是带参数,也有可能是不带参数的0 U% W# y+ L; I9 U5 I9 s
譬如:! l& [3 k$ k/ l$ `+ F
1,不带参数的命令:LIST
3 @' P2 Q  F. c+ {0 l2,带参数的命令:GET <filename>
; x  z6 f0 ]8 B我就是想如何能够灵活的取得用户的输入进行处理,即这几种情况都能处理。1 M& y5 l, {0 x! v! ?
我本来想用scanf来取用户的输入,如下
# s* n/ N* t9 l8 i$ g        char command[20];
, e( y5 B" b% v( |. y        memset(a, '\0', 20);* N- z' C5 Q0 Q, K: y9 g# A
        char parameter[20];5 U6 v. |( K" l  w
        memset(b, '\0', 20);7 S; J; W* s# t- ?3 s+ {/ m
        scanf("%19s%19s",command,parameter);/ w- D& H! g8 p
但是不行,因为必须只有输入两个字符串后scanf后才会返回。我希望的结果是如果没有参数的话,只是输入一个命令然后回车一下就能够返回,这样的话就可以忽略parameter参数。
+ {9 l7 x$ B* {; B6 K! i命题比较幼稚,劳驾帮个忙。谢谢      

TOP

看不明白,命令行参数和用户输入啥关系?      
上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。

TOP

[QUOTE=onlyflyer]问题是这样的:
' y0 @/ c$ M( v: F) F3 {) C5 f我的程序从终端获取用户的输入,用户的输入有可能是带参数,也有可能是不带参数的
5 s4 v5 R: J" |5 O1 R譬如:) x+ C( k: {1 l1 G+ d0 x
1,不带参数的命令:LIST
2 _* @* }0 ^+ P( P  v% }; E3 z2,带参数的命令:GET <filename>8 }1 V% P6 O. T1 Z; ~; a$ u" R
我就是想如何能够灵活的取得用户的输入进行处理,即这几种情况都能处理。5 Z+ @1 u2 V" O) c& y' @1 G8 ?
我本来想用scanf来取用户的输入,如下
" }. n. U# d2 i3 {  m' b7 ?- k$ Z        char command[20];
& y2 w, q: F9 h. g7 w        memset(a, '\0', 20);5 k6 s, l0 h+ U9 q6 D9 w3 _
        char parameter[20];0 S6 J+ z1 ^' `% H
        memset(b, '\0', 20);/ |8 Z  K( e2 v' i3 q% |" F
        scanf("%19s%19s",command,parameter);9 m+ y6 r; Y9 t; @+ ~+ u3 ~: l$ m
但是不行,因为必须只有输入两个字符串后scanf后才会返回。我希望的结果是如果没有参数的话,只是输入一个命令然后回车一下就能够返回,这样的话就可以忽略parameter参数。4 a* X# s8 v7 A4 Z" G4 Y5 y* Z
命题比较幼稚,劳驾帮个忙。谢谢[/QUOTE]
1 e2 |7 p1 B' m: n4 w2 r# I8 H9 H4 X$ J$ I( W% C: O- q$ K5 M* \
: p0 S8 x4 h( r7 B
你可以只用一个字符串接收命令和参数。
! k. K+ u# t* s5 }& d! W0 uscanf("%s", commandAndParam );& s- i. D, p6 n( G' p7 _: E, s& k: ?3 M
' h% b" Q2 a: v, t
之后再对字符串进行解析      

TOP

不是很明白楼主的问题。不过我可能大概了解您的意思,您是想在程序的参数中可以根据参数个数有不同的9 T; f' C6 u) S! k( Q/ K9 a1 ]
处理方式?下面的写法可能适合您。+ _, b, b$ {& P. ~" }
main(int argc, char**argv){# b- v9 ]' ~2 X4 J
switch(argc){6 }7 s% t3 h4 |: `& s( l. D3 `
   case 1:
: y3 `: S) _& ]               ...; B7 l9 q& H: y' N& x% e& U: q
               break;
/ h& S' n: m( m0 R, Q3 y   case 2:+ N3 L3 D2 c; \4 X) q& D: l' J; C
               break;+ H2 a* `8 _- K3 C! J
   ..., o: w0 L' b( d2 F" ]3 w$ i' B
   default:
& ^) v* u; e/ N# b               break;# G1 x% K( {5 }' D7 h& O
}
" j( W  ^( z5 {+ V return 0;
$ }% ?; o7 F$ [! U# q+ M6 K}      

TOP

发新话题