[Powered by Google Translate] [દલીલો કમાન્ડ લાઇન]
[ક્રિસ્ટોફર Bartholomew - હાર્વર્ડ યુનિવર્સિટી]
[- CS50.TV આ CS50 છે]
એક કાર્યક્રમ માટે ઉપયોગી લક્ષણ વપરાશકર્તા ઈનપુટ સ્વીકારતું નથી.
આમ અત્યાર સુધીમાં અમે CS50 પુસ્તકાલય અંદર કેટલાક કાર્યો સંશોધન કર્યું છે
માટે જેમ કે વપરાશકર્તા ઈનપુટ સ્વીકાર, "શબ્દમાળા મેળવવા માટે,"
જે વપરાશકર્તા પૂછે છે, જ્યારે અરજી ચાલી રહ્યું છે એક શબ્દમાળા માટે.
>> જો કે, ત્યાં કિસ્સાઓ છે કે જ્યાં તમે તમારા કાર્યક્રમ ઇનપુટ આપવા માંગો છો
પહેલાં તે વાસ્તવમાં ચાલી રહી છે.
આ રીતે, તમે તમારા વપરાશકર્તા પાસેથી વધારાની માહિતી પૂછી જરૂર નથી
જ્યારે એ સાદી ક્રિયા ચલાવવા.
ઉદાહરણ તરીકે લો, કે mv અથવા UNIX માં ચાલ આદેશ.
આ આદેશ વપરાશકર્તા એક સ્થળેથી બીજા એક ફાઇલ ખસેડવા માટે પરવાનગી આપે છે.
જાતે પૃષ્ઠો અનુસાર, mv બે આદેશ વાક્ય દલીલો સ્વીકારે છે:
તે ફાઇલ ખસેડવામાં આવી રહ્યો છે અને સ્થાન માટે ફાઈલ ખસેડવામાં આવી રહ્યો છે.
તેથી આ ઉદાહરણ બે દલીલો સાથે આદેશ છે.
તેથી અમે કેવી રીતે અમારી સી કાર્યક્રમને કહેવું નથી આ આદેશ વાક્ય દલીલો ઉપયોગ કરે છે?
>> વેલ, તે તારણ છે કે જે મુખ્ય છે, જે અમે તમામ સી કાર્યક્રમો ઉપયોગ એક ગુપ્ત હોય છે.
Argc અને argv: મુખ્ય બે પરિમાણો સ્વીકારે છે.
ચાલો આ શબ્દો પર જાઓ.
>> પ્રથમ પરિમાણ, argc, જે દલીલ ગણતરી માટે વપરાય છે,
પૂર્ણાંક એક માહિતી પ્રકાર છે.
આ argc પરિમાણ દલીલો સંખ્યા આદેશ સમાવેશ થાય છે, સમાવે છે.
અમારા ચાલ આદેશ, જો કે અમે માત્ર બે દલીલો દર્શાવી છે,
માતાનો argc કિંમત 3 હશે.
બીજા પરિમાણ, argv, જે દલીલ વેક્ટર માટે વપરાય છે,
ઘરનાં પરચૂરણ કામો પોઇંટરો કે શબ્દમાળાઓ માટે નિર્દેશ ઝાકઝમાળ છે.
>> આનો અર્થ એ થાય કે argv દરેક તત્વ, શૂન્યથી શરૂ કરીને,
આદેશ અને દલીલો સમાવે છે.
ઉદાહરણ તરીકે, argv [0] છે, કે જે હું શૂન્ય argv તરીકે નો સંદર્ભ લો પડશે,
હંમેશા આદેશ કે સ્કોર રહી છે સમાવશે -
આ કિસ્સામાં, mv.
argv [1] પ્રથમ દલીલ, file.txt સમાવશે,
અને argv [2] બીજી દલીલ સમાવશે / ~ / cs50.
Argv ના છેલ્લા દલીલ હંમેશાં નલ હશે.
તેથી આપણે આ આદેશ વાક્ય દલીલો અમલ.
અગાઉના કસરતો, અમે રદબાતલ મૂકવામાં, કંઇ જેનો અર્થ એ મુખ્ય પરિમાણ તરીકે.
જોકે, અમારા માટે આદેશ વાક્ય દલીલો ઉપયોગ કરવા માટે,
અમે મુખ્ય પૂર્ણાંક argc, ચાર * argv] [ઓફ રદબાતલ અને સ્થળ અંદર દૂર કરવાની જરૂર છે.
હવે argv ના સમગ્ર તત્વ છે, કે જે તમારી દલીલો છે ઍક્સેસ,
તમે ખાલી ફરી વળવું શકો છો, અથવા આ લૂપ જેવા એરે મારફતે.
તેથી, તે મુખ્ય શરીરના અંદર, અમે આગળ વધીશું અને લૂપ માટે ટાઇપ જઈ રહ્યાં છો:
માટે (પૂર્ણાંક હું = 0; i + +; i <argc).
>> અમે એક સર્પાકાર તાણવું અહીં જરૂર નથી કારણ કે અમે માત્ર કોડ એક વાક્ય ચલાવવા કરી રહ્યાં છો
આ લૂપની શરીરની અંદર.
અમે આગળ વધીશું અને ટેબ એકવાર ફટકો પડશે,
પછી printf લખો ("argv [% d], એક પૂર્ણાંક કિંમત પ્રતિનિધિત્વ કરે છે,
% s છે, શબ્દમાળા માટે, પછી નવી લીટી પાત્ર.
તો પછી અમે printf પૂરી પાડવા હું લૂપ ના વર્તમાન પુનરાવૃત્તિ માટે
અને argv [i] વર્તમાન દલીલ આદેશ લીટી શબ્દમાળા પ્રતિનિધિત્વ કરે છે.
જ્યારે અમે તે બે દલીલો સાથે ચલાવવા માટે, અમે આવી રહી ટર્મિનલ પ્રદર્શિત દલીલો જોશો.
અગાઉ અમે જણાવ્યું હતું કે argv ઘરનાં પરચૂરણ કામો પોઇંટરો ઝાકઝમાળ યોજાઇ હતી.
>> તેથી, જો આ કિસ્સો હોય, તો અમે તે પછી કેવી રીતે કરી શકું દરેક દલીલ વ્યક્તિગત અક્ષરો ઍક્સેસ?
ઉદાહરણ તરીકે, જો મને પ્રથમ દલીલ ચોક્કસ અક્ષર જોવા માટે માગે છે?
વેલ, તો જવાબ છે કે અમે એક નેસ્ટેડ લૂપ અરજી કરવાની રહેશે
કે પછી દલીલ શબ્દમાળા માં તત્વો દરેક મારફતે ફરી વળવું પડશે.
આ રીતે તમે તે કરી.
>> પ્રથમ, અમે example2.c એક નકલ કરી રહ્યા છીએ.
પછી, અંદર લૂપ માટે પ્રથમ,
અમે લૂપ માટે વધારાની ઉમેરવા જઈ રહ્યાં છો.
તેથી (પૂર્ણાંક જ = 0, એન strlen = (argv [i]),
જે પછી અમને વર્તમાન દલીલ લંબાઈ આપે છે,
; જ ન <; જ + +)
અમે દરેક પાત્ર સ્થાન છાપી રહ્યા છીએ
printf ઉપયોગ કરીને વર્તમાન દલીલ ની અંદર.
તેથી, printf ("argv [% d], તો વર્તમાન દલીલ ઇન્ડેક્સ પ્રતિનિધિત્વ કરે છે,
પછી [% d] ફરી એક વાર કરવા માટે, વર્તમાન દલીલ ચાલુ અક્ષર પ્રતિનિધિત્વ કરે છે,
% c દલીલ માં વર્તમાન પાત્ર માટે, છે.
છેલ્લે, અમે બાહ્ય લૂપની ઇન્ડેક્સ સાથે printf પૂરી પાડે છે, આઇ,
પછી આંતરિક લૂપ ના ઇન્ડેક્સ.
>> અને અમારા છેલ્લા દલીલ printf પ્રદાન દલીલ ના વાસ્તવિક પાત્ર છે
આદેશ વાક્ય પર.
હવે, હું શબ્દમાળા strlen કાર્ય માટે વાપરી શબ્દમાળા લંબાઈ મેળવવા કારણ કે,
હું પણ અમારી સમાવેશ થાય ટોચ માટે string.h પુસ્તકાલય ઉમેરવું જ જોઈએ.
તેથી, કે કરવા માટે, અમે જાઓ, અને પડશે stdio.h હેઠળ માત્ર, અમે કરવા જઈ રહ્યાં છો
# સમાવેશ થાય છે.
>> તેથી, ચાલો કમ્પાઇલ અને ચલાવો અને તે વાસ્તવિક દલીલ પૂરી પાડે છે.
>> અને, આપણે જોઈ શકો છો, અમે હવે દલીલ માં દરેક વ્યક્તિગત ઘરનાં પરચૂરણ કામો ની ચોક્કસ સ્થાન હોય છે.
જેથી તે છે. હું ક્રિસ્ટોફર Bartholomew છું; આ CS50 છે.
[CS50.TV]