[સંગીત વગાડવાનો] ZAMYLA ચાન: પુનઃપ્રાપ્ત માતાનો હલ કરીએ. પુનઃપ્રાપ્ત કદાચ મારી પ્રિય pset છે, અને મુખ્યત્વે હું તેને લાગે છે, કારણ કે ખરેખર, ખરેખર સરસ. મૂળભૂત રીતે, તમે મેમરી આપવામાં રહ્યા છો કાર્ડ ફાઇલ કે જેમાં ચિત્રો કાઢી નાખવામાં આવ્યા છે. પરંતુ જો તમે રહ્યા છીએ શું તેમને બધા વસૂલ છે. બરાબર. તેથી કદાચ તે ખરેખર આકર્ષક છે, પરંતુ તમે, કારણ કે થોડી લાવનારાઓ ખાલી સી ફાઈલ અને આપવામાં તમે તેને સાઇન ભરવા માટે છે ઠીક છે, તેથી આપણે આ તોડી દો વ્યવસ્થા ભાગો છે. તમે ખોલવા માંગો છો પડશે મેમરી કાર્ડ ફાઇલ. તે પર્યાપ્ત સરળ લાગે છે. પછી, શરૂઆતમાં શોધવા એક JPG છબી. આ મેમરી પર તમામ ફાઇલો કાર્ડ jpgs હશે આવે છે. પછી, એક વાર તમે શરૂઆત શોધવા જો તમે નવી JPG ખોલવા જઈ રહ્યા છો , જેમ કે, એક JPG, બનાવવાની, અને 512 લખો છે નવી JPG છે ત્યાં સુધી એક પછી બાઇટ જોવા મળે છે, અને કાર્યક્રમ અંત, એક વખત તમે ફાઈલના અંતે શોધી શકે છે. તેથી પ્રથમ પગલાં પ્રથમ ખોલવા માટે છે મેમરી કાર્ડ ફાઇલ. પરંતુ જો તમે પહેલાથી જ આ ખબર છે, અને ત્યાં બનશે કે ફાઈલ I / O નો કાર્ય ખૂબ જ ઉપયોગી સાબિત. બરાબર. તેથી jpgs શું છે? અમે શરૂઆતમાં તે જરૂર છે. વેલ, jpgs, માત્ર થોડી નકશા જેવા, માત્ર બાઇટ્સ ક્રમ છે. સદભાગ્યે, દરેક JPG ક્યાં સાથે શરૂ થાય છે 0xff, 0xd8, 0xff, 0xe0, માત્ર એક ક્રમ ના બાઇટ્સ, અથવા અન્ય બાઇટ્સ ક્રમ. તેથી તે ચાર બાઇટ્સ સૂચવે એક JPG શરૂઆત. તે બે સંયોજનો આપે છે ચાર બાઇટ્સ. અને સદભાગ્યે આપણા માટે, અન્ય હકીકત એ છે કે આપણે લાભ લઈ શકે છે કે દરેક JPG બાજુ દ્વારા બાજુ સંગ્રહ કરવામાં આવે છે મેમરી કાર્ડ પર. હું એક માળખું રજૂ કર્યું schematically આ મેમરી કાર્ડ અહીં સ્લાઇડ. અહીં, દરેક ચોરસ, લંબચોરસ દરેક, 512 બાઇટ્સ રજૂ કરે છે, અને તે શરૂ થાય છે અમે કે જે એક ગ્રે સાથે ખરેખર એક JPG છે. પરંતુ તે પછી અમે આખરે ફટકો એક સ્ટાર સાથે બ્લોક. તે અર્થ એ થાય કે પ્રથમ ચાર બાઇટ્સ બહાર તે 512 તે બે એક છે એક JPG ક્રમ શરૂ થાય છે. અને અમે એક વાર પછી ત્યાંથી જાય છે, અને એક JPG આગામી એક શરૂ થાય છે, અંત થાય છે. અમે ક્યારેય કોઇ વધુ ન હોય તેની વચ્ચે ગ્રે જગ્યા. પરંતુ કેવી રીતે અમે ખરેખર આ વાંચો, અને નથી અમે કરી શકો છો કે જેથી 512 બાઇટ્સ વાંચી સરખામણી પ્રથમ સ્થાન? વેલ, જે પાછા fread પર જાઓ જે સમાવે છે સ્ટ્રક્ટ માં લઈ જાય છે તમે વાંચી રહ્યા છો તે બાઇટ્સ. તેથી તમે મૂકી રહ્યા છીએ ત્યાં તે - કદ, સંખ્યા, અને પછી inpointer તમે માંથી વાંચવા રહ્યાં છે. હવે, અમે એક સમયે 512 વાંચી શકો છો, અને અમે એક બફર આ સંગ્રહ કરવા માંગો, હું તેને કહું જાઉં છું. મૂળભૂત રીતે, અમે પકડી રહ્યા છીએ તે 512 બાઇટ્સ પર અને શું તે સાથે વસ્તુઓ, અધિકાર? અમે ક્યાં તો પ્રથમ કરો રહ્યા છીએ ચાર બાઇટ્સ, અથવા આપણે રહ્યા છીએ ઠીક છે, તેમાંથી વાંચે? તેથી પછી ડેટા નિર્દેશક ત્યાર પછી તમારા બફર તરીકે સેવા, અને inpointer, સાથે સાથે, કે જે હમણાં જ ચાલી રહ્યું છે તમારી મેમરી કાર્ડ છે. અમારા મેમરી કાર્ડ યોજનાકીય પર પાછા. અમે એક સમયે 512 બાઇટ્સ વાંચી રહ્યા છીએ, દરેક 512 બાઇટ બ્લોક સ્ટોર એક બફર માં, હોલ્ડિંગ તે પર આપણે જાણીએ છીએ, ત્યાં સુધી, તે 512 બાઇટ્સ બફર બરાબર શું કરવું જોઈએ. તેથી શરૂઆતમાં કંઈપણ નથી, તેથી અમે બફર વાંચી તે કરો, અને પડશે અમે તેની સાથે કંઈ પણ કરવા માટે જરૂર નથી. અને પછી, અમે આખરે એક તારો હિટ અમે કર્યું છે કે, જેનો અર્થ થાય અવરોધિત અમારી પ્રથમ JPG મળ્યાં નથી. તેથી બફર હવે પકડી કે JPG બાઈટ્સ. તેઓ 512 બાઇટ્સ, કારણ કે આગામી સમય નથી એક સ્ટાર બ્લોક, પણ છે કે JPG ભાગ છે. અને JPGS ત્યાંથી સતત છે પર હવે પછીના JPG હિટ, ત્યાં સુધી માં. અને પછી બફર પછી ધરાવે છે 512 કે JPG માટે બાઇટ્સ, અને તેથી, અને તેથી આગળ. બરાબર. તમે પ્રથમ તારાંકિત હિટ તેથી એક વખત બ્લોક, પ્રથમ JPG, તમે કેવી રીતે કરવું ખરેખર, સાથે સાથે, તેને ખોલવા? ચાલો એક નવી JPG બનાવીએ. એક JPG માટે ફાઈલ નામો જવું છે આ બંધારણમાં જ હોવી, નંબર, નંબર, number.jpg, કે તેઓ રાખવામાં આવ્યું રહ્યા છો તેઓ જોવા મળે છે કે જેમાં ક્રમ, 0 શરૂ. જેથી પ્રથમ JPG કે જો તમારી પાસે શોધવા 000.jpg કરવામાં આવશે. તેથી, કદાચ એક સારો વિચાર ટ્રેક રાખવા માટે તમે અત્યાર સુધી મળી છે કે કેટલા jpgs. જેથી ફાઇલ નામ છે. પરંતુ તમે કેવી રીતે વાસ્તવમાં તે કરી શકું? વેલ, અમે ઉપયોગ જઈ રહ્યાં છો એક કાર્ય sprintf છે. માટે સમાન printf એક થોડો છે, જ્યાં તમે શબ્દમાળાઓ માટે જગ્યામાં ઉપયોગ કરી શકો છો આ કિસ્સામાં સિવાય sprintf છાપશે વર્તમાન ફાઇલ બહાર ડિરેક્ટરી, બિન ટર્મિનલ માં. બરાબર. અહીં અમે અમે શીર્ષક છે કે નહીં તે જોવા, સ્ટોર છે કે જે ઘરનાં પરચૂરણ કામો એરે પરિણામે શબ્દમાળા, અને અમે પાસ એક સાથે વાસ્તવિક શબ્દમાળા શીર્ષક પ્લેસહોલ્ડર, માત્ર અમે દીધું છે printf સાથે કરી શીખ્યા. પરંતુ હું અહીં છે કે આ કોડ 2.jpg નથી 002.jpg આપશે. તેથી હું તે જાણવા માટે તમારા માટે છોડી જાય છે કેવી રીતે બનાવવા માટે પ્લેસહોલ્ડર સુધારવા પાંચ સાચું નામ. બરાબર. તેથી એક વખત તમે તમે આ કરી શકો તો પછી sprintf'd છે તે અસ્તિત્વ ધરાવે છે, કારણ કે, તે ફાઇલ ખોલો fopen સાથે તમારા ડિરેક્ટરી, મદદથી શીર્ષક, અને તમે ઇચ્છો તો પછી ગમે સ્થિતિ સાઇન તે ફાઈલ ખોલવા માટે તેથી હવે અમે નવા JPG ફાઇલ ખોલી કરી લીધી છે, હવે અમે એક પર 512 બાઇટ્સ લખી શકો છો નવી JPG જોવા મળે છે ત્યાં સુધી સમય,. તેથી આપણે અન્ય નજર fwrite ની સિન્ટેક્ષ છે. હું આ સ્લાઇડ દર્શાવે છું ખબર છે કે ઘણા છે, પરંતુ હું માત્ર તેની ખાતરી કરવા માંગો છો તમે ગાય્ઝ પણ ગેરસમજ મળી નથી કારણ કે હું તે ખૂબ જ સરળ છે ખબર છે કે પ્રથમ અને છેલ્લા મિશ્રણ દલીલ, ખાસ કરીને. પરંતુ તમને આ લખી રહ્યાં યાદ રાખો કે બહાર ફાઇલ છબીઓ તમારા બફર. હવે તમે જાણો છો કે કેવી રીતે લખવા 512 તમે કર્યું છે કે જે તમારા JPG ફાઇલમાં બાઇટ્સ બનાવનાર, સાથે સાથે, અમે તે બંધ કરવા માંગો છો અમે અંત સુધી પહોંચી ગયા છો પ્રક્રિયા એક વખત અમારા કાર્ડ, કારણ કે ત્યાં નહીં જોવા મળે છે કોઇ વધુ છબીઓ. તેથી આપણે fread પર પાછા જાઓ વધુ એક વખત, હું વચન. fread કદ ઘણી વસ્તુઓ કેવી રીતે આપે છે, કદ, સફળતાપૂર્વક માં તૈયાર હતા. આદર્શ રીતે, આ પ્રયત્ન રહ્યું છે ગમે તમે, નંબર માટે પાસ? તમે નંબર વાંચી પ્રયાસ કરી રહ્યા છો કારણ કે કદ, કદ તત્વો. પરંતુ fread કે વાંચી શકતા ન હોય તો તત્વો નંબર છે, પછી તે પરત મળશે તે સફળતાપૂર્વક વાંચી ગમે સંખ્યા. હવે, નોંધ કરવાની એક મહત્વની બાબત છે કે તમે મને / કંઈપણ બીજી ફાઇલ વાપરો તો fgetc જેમ કાર્ય છે, તે પણ પરત મળશે તે સફળતાપૂર્વક વાંચી ઘણી વસ્તુઓ કેવી રીતે. શું આ કાર્ય વિશે ઉપયોગી છે છે કે તમે અંદર કાર્યો ઉપયોગ જો શરત, તે જ્યારે પોતે ચલાવવા પડશે છે કે સ્થિતિ, નક્કી માત્ર ખરેખર ઉપયોગી છે. તેથી જો તમે આ શરતો હોય છે, જેમ કે, જો fread બફર, sizeof કૂતરો, 2, નિર્દેશક, 1 સમકક્ષ સમકક્ષ હોય છે કે હું વાંચી કરવા માંગો છો કે જે થાય છે સમયે 2 ડોગ્સ. પરંતુ fread તરીકે બદલે 2 1 આપે, તો અપેક્ષા, કે 2 છે કે જે થાય છે શ્વાન મારા ફાઇલમાં બાકી છે, પરંતુ તેના બદલે 1. પરંતુ તે 2 આપે છે, પછી હું હજુ પણ છે મારા બફર ની અંદર તે 2 ડોગ્સ. તેથી હવે તમે કેવી રીતે એક સમજ આપે છે આ ફાઈલના અંતે માટે ચકાસો, પરંતુ હવે તર્ક મારફતે જાઓ. કેવી રીતે અમે ખરેખર તમામ ભાગ નથી એક સાથે આ તત્વોની? અમે અમારી પ્રથમ JPG હિટ જાય, કારણ કે અમે jpgs સંગ્રહાય છે ખબર છે કે નજીકના, અમે ત્યાં સુધી લખવા પડશે અમે કાર્ડ ફાઈલના અંતે પહોંચે છે. પરંતુ અમે લખી નથી માંગતા કંઈપણ ત્યાં સુધી. તેથી તે અમે પર છો કે માત્ર બાબતો, આ નવી JPG શરૂ, પરંતુ કે શું અમે પહેલાથી જ એક JPG અથવા નથી મળ્યાં છે. એ એક નવો JPG શરૂઆત છે, તો અમે પડશે અમારા વર્તમાન JPG ફાઇલ જો બંધ કરવા માંગો છો અમે એક ઓપન, અને ખુલ્લી છે માં લખવા માટે કરી નવો. તે નવી JPG શરૂઆત નથી, તો જોકે, અમે એ જ JPG ફાઇલને પડશે ખોલો અને તે માં લખો. અમે જે અમારા બફર લખીશ અમે ખોલેલા JPG ફાઇલ, એ શરતે કે અમે અલબત્ત, એક ઓપન છે. અમે અમારી પ્રથમ JPG મળ્યા નથી તો છતાં, આપણે કંઈ પણ લખો નહિં. અને આ પ્રક્રિયા તમે ત્યાં સુધી ચાલુ રહે છે કાર્ડ ફાઈલના અંતે પહોંચે છે. અને છેલ્લે, તમે બનાવવા માંગો છો પડશે જો તમે કોઇ fclose ખાતરી કરો કે તમે fopened કરેલો ફાઈલો. તમે સાથે આરામદાયક છો એકવાર ખ્યાલો, કેટલાક પર એક નજર હું અહીં સમાવેશ કર્યા છે જે સ્યુડોકોડનો. પ્રથમ, તમે કાર્ડ ફાઇલ ખોલવા માંગો છો, અને પછી નીચેનો પ્રક્રિયા પુનરાવર્તન તમે પહોંચી ગયા છો ત્યાં સુધી કાર્ડ અંત થાય છે. તમે 512 બાઇટ્સ વાંચી શકો છો એક બફર માં. કે બફર મદદથી, તમે તપાસ કરવા માંગો છો પડશે તમે શરૂઆતમાં છો નવી JPG અથવા નથી. અને તે પ્રશ્નનો જવાબ આપશે તમારી ફાઈલ વ્યવસ્થાપન અસર - જે તમે ફાઇલો ખોલો, જે તમે જેના બંધ છે. પછી, તમે પહેલેથી જ JPG મળ્યા છે? તમે કેવી રીતે રાખી રહ્યું છે કે ટ્રૅક? પછી, તો તેના પર આધાર રાખીને, તમે ક્યાં તો પડશે વર્તમાન JPG માં લખો કે તમે તે બધા લખી ઓપન, અથવા ન હોય, તમે હજુ સુધી એક JPG મળ્યા નથી છે. છેલ્લે, એક વાર તમે અંતના પહોંચી ગયા છો ફાઇલ, તમે કોઈ પણ બંધ કરવા માંગો છો પડશે તમે ખોલેલા તે ફાઇલો બાકી. અમે અહીં વ્યવસ્થિત રાખવા માંગે છે. અને તે સાથે, તમે બધા પ્રાપ્ત છે કે મેમરીમાંથી ગુમ થયેલ ફાઇલો એક ખૂબ સુંદર પરાક્રમ છે જે કાર્ડ,. તેથી પાછળ તમારા પેટ. પરંતુ, વધુ એક તત્વ છે આ સ્પર્ધા છે જે pset,. તમે મળશે કે ચિત્રો તમામ તમે પ્રાપ્ત કરી છે તે ખરેખર છે CS50 સ્ટાફ ચિત્રો. તેથી જો તમે કેમ્પસ પર અથવા બીજે છો નજીક, તો પછી તમારી સાથે ચિત્રો લઇ શકે છે સ્ટાફ, અને છે કે વિભાગ સ્ટાફ સભ્યો સાથે સૌથી વધુ ચિત્રો તેમના પ્રાપ્ત ફાઇલોની કરશે એક અદ્ભુત ઇનામ વિષે. કે સાથે, પછી તમે પૂર્ણ કરી લો પુનઃપ્રાપ્ત pset. મારું નામ Zamyla છે, અને આ CS50 છે.