Technology sharing

[C lingua] Ludere cum lima res

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

🌟🌟Auctor protocollum:ephemers__

🌟🌟Columnae pertinentes;C lingua

Tabula contentorum

introductio

1. Aperiens et claudens files

1. influunt

2. Latin fluxus

3. Text lima et binarii files

4. Munera quae imperium file aperiendi et claudendi

2. Sequentialis lectio et scriptura de files

3. Random legere et scribere de files

1.fseek munus

2.ftell function

Munus 3.rewind

4. Determinatio finis documenti Lectio

Summatim


introductio

Cum programmata scribemus, notitias in variabilibus saepe recondimus. Si progressio exituum et memoria repetetur, haec notitia amittetur. Estne igitur via nobis constanter hanc datam servandi ut notitia adhuc exstent, cum iterum aperiatur progressio? Respondetur quod sic. Quid hoc potest facere est;File res

1. Aperiens et claudens files

1. influunt

Rationis notitia in externis machinis outputare debet, et ab externis machinis inputare necesse est. Pro diversis artibus, input et output modi sunt diversae. Ut operationes nostras in variis initibus et outputis cogitationibus faciliores reddamus, notionem "amnis" valde abstractam habemus. In lingua C, input et output operationes in lima, screens, claviaturae, etc. omnia per "flumina" fiunt. In genere, si notitias scribere vel notitias legere velimus, necesse est ut rivum aperiamus.

2. Latin fluxus

Cum programmatis linguae C inceperit, defaltam facittria fluminaApertum est iam nobis;

stdin--Standard input stream, input a tincidunt in pluribus.

stdout--Standard output stream, monitor output in pluribus.

stderr--Standard error stream, output to the monitor in pluribus.

Quia hi tres rivi per defaltam aperti sunt, operationes input et output utentes functiones sicut scanf et printf directe praestare possumus.

Hi tres rivi genera habent.File monstratorem (FILE*) .Cum lima operationes perficimus, praeterimusTabella variabilis monstratorem obliqua tabella cum ea coniunctam invenire potest.

3. Text lima et binarii files

Secundum quomodo data ordinatur, fasciculi notitia vocanturtext limaor *binarii file . Data forma binaria in memoriam reponitur;Si output ad tabulam repositionis externam sine conversione, estbinarii file
Si in ASCII codice in repositione externa condi oportet, ante repono converti debet.A lima in ASCII forma condita esttext lima
Quomodo fragmen lima in notitia conditur?
Characteres semper in ASCII reponuntur, et notitia numeralis in forma ASCII vel binaria condi possunt. Exempli gratia, si sit integer 10000, si in forma ASCII codici ad orbem ponatur, 5 bytes in disco obtinebit (unum byte pro singulis characteribus), dum si in binaria forma sit output, illud bytes tantum occupant IV in disco.

4. Munera quae imperium file aperiendi et claudendi

Post hanc cognitionem praerequisitam intellegendam, ad punctum perveniamus - fasciculi aperiendi et imagini claudendi. C lingua duo munera praebet, quae relativo imagini aperiendi et claudendi responsales sunt. Prototypa sunt haec:

file aperire:
FILE * fopen * * * * * * * const .
Claudere tabella:
int fclose ( FILE * stream ) ;

Munus fopen habet duos parametros;Primus modulus exprimitur in forma chordaefile nomen, secundus est tabella parametriApertum modumRepraesentatum per filum .Cum hoc munere utentes, necesse est nos creare afile indicator variabilis Accipere, cum tabella non aperitur, monstratorem nullum reddit. Quoad modos agendos, hic sunt sequentia;

Apertum modumsignificatioSi certa file non est
"R" (solum legere)
Ut intret data, aperi ens textum lima
Nullum indicatorum refert
"W" (solum scribere)
Ad output data, textum file aperire
Novam file
"a" (append)Addere notitia ad finem textus limaNovam file
"R" (legere solum)Data intrare, aperire file binariiNullum indicatorum refert
"Wb" (solum scribere)Ad output data, aperi file binariiNovam file
"ab" (append)Addere notitia lima usque ad finem binariiNovam file
"R" (legere et scribere)Nam legere et scribere, textum aperiNullum indicatorum refert
"w+" (legere et scribere)Nam legere et scribere, novum textum fasciculum creareNovam file
"a+" (legere et scribere)Aperi limam et lege et scribe in fine tabellaeNovam file
"Rb+" (legere et scribere)Aperi file binarii ad legendum et scribendumNullum indicatorum refert
"Wb+" (legere et scribere)
Nam legere et scribere, novum fasciculum binarium creareNovam file
"ab+" (legere et scribere)
Aperi fasciculus binarius et lege et scribe in fine tabellaNovam file

Ad munus fclose, modulus eius est tabella monstratrix, quae tabellam monstrante tabella monstrante claudere solet.

Deinde conamur limam aperire et claudere:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. FILE* pf = fopen("test.txt", "w");
  5. if (pf == NULL)//文件打开失败则退出程序
  6. {
  7. perror("fopen");
  8. return 0;
  9. }
  10. printf("文件打开成功n");
  11. fclose(pf);
  12. pf = NULL;//避免出现野指针,及时制空
  13. return 0;
  14. }
operatio effectus;

Perspici potest quod, cum modus "w" sit aperiendi, limam "test.txt" nominatam in via manifestare potest.

2. Sequentialis lectio et scriptura de files

Deinde plura munera proLegere aut scribere notitia ad lima

Munus nomenOfficiumApplicatur to
fgetcMores initus functionisOmnes input fluenta
fputcmores output munusOmnes rivi output
fgetsTextus linea initus functionisOmnes input fluenta
fputsTextus linea output functionOmnes rivi output
fscanf**Forma initus functionisOmnes input fluenta
fprintfForma output munus Omnes rivi output
freadBinarii initusFile initus stream
fwriteBinarii outputFile output stream

Deinde conamur utifscanf**etfprintfofficium:

Primus modulus harum duarum functionum fasciculus monstrator est, qui notitias fasciculi legere et scribere solebat. Parametri subsequentes iidem sunt ac functiones scanf et printf.

  1. #include <stdio.h>
  2. int main()
  3. {
  4. FILE* pf = fopen("test.txt", "w");//要写入数据,以写的形式打开文件
  5. if (pf == NULL)
  6. {
  7. perror("fopen");
  8. return 0;
  9. }
  10. fprintf(pf, "123456");//向文件中写入数据
  11. fclose(pf);
  12. pf = NULL;
  13. return 0;
  14. }

Ut videre potes, notitia tabella scripta est. Deinde utimur fscanf functioni ad imprimendum tabellam datam velum:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. char str[20] = { 0 };
  5. FILE* pf = fopen("test.txt", "r");//要读取数据,以读的形式打开文件
  6. if (pf == NULL)
  7. {
  8. perror("fopen");
  9. return 0;
  10. }
  11. fscanf(pf, "%s", str);//读取数据到str当中
  12. printf(str);
  13. fclose(pf);
  14. pf = NULL;
  15. return 0;
  16. }
operatio effectus;

3. Random legere et scribere de files

1.fseek munus

Munus fseek munus estEx loco et offset tabella monstratorempositionefile indicatorum . Prototypum eius tale est:

int fseek (FILE * stream, long int offset, int origin);

Primus eius modulus est monstror tabella, secundus parameter est cinguli relativus ad statum positis, tertius modulus est positio statuta.

C lingua definit tresMacroelige unum ex his ut tertium modulum;

SEEK_SET: initium tabellae positio

SEEK_CUR: Praesens tabellae positio monstratorem

SEEK_END: ​​finis documenti

Post tabella monstratorem locare, legere vel scribere apud certum locum tabellae possumus.

2.ftell function

munus ftell adhibetur ad reditusDe offset tabellae regulae ad initium positionis . Munus exemplar:

long int ftell (FILE * stream);

Munus 3.rewind

rewind munus adhibetur adRevertere locum tabellae monstratorem ad principium tabellae . Munus suum exemplar:

void rewind (FILE * stream);

4. Determinatio finis documenti Lectio

1. For*text lima, primum uti possumusfgetcMunus ansas per characteres in tabella donec EOF legitur, indicansFile Lectio terminos

2. For*binarii file,UtimurfreadMunus suum valorem reditus determinat:Num minus quam ipse numerus legendus est? .Si minus est quamLectio finium.

Ad duos casus supra, tabellaIn fine Lectio, pergere possumus iudicareQuod file Lectio finita . Duo munera inducere:feofetferror

feofMunus propterDeterminare finem documenti Lectioratioutrum vel nonFinis documenti offendit . Prototypum eius tale est:

int feof (FILE * stream);

Si tabella est exLegere ad finem documentiExpleto lectione, EOF redditur;

        ferrorMunus propterDeterminare finem documenti Lectioratioutrum vel nonAn EGO / O error occurrit . Prototypum hoc est:

int ferror ( FILE * stream ) ;

Si tabella est exAn EGO / O error occurritPeracta lectione, redditur non nulla valoris;

Deinde conamur scribere particulam codicis ut iudicet finem documenti lectionis:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int c = 0;
  5. FILE* fp = fopen("test.txt", "r");
  6. if (fp == NULL)
  7. {
  8. perror("fopen");
  9. return 0;
  10. }
  11. while ((c = fgetc(fp)) != EOF)//返回EOF则读取结束
  12. {
  13. putchar(c);
  14. }
  15. //判断读取结束的原因
  16. if (ferror(fp))
  17. puts("I/O错误n");
  18. else if (feof(fp))
  19. puts("文件读取结束n");
  20. fclose(fp);
  21. fp = NULL;
  22. return 0;
  23. }

Summatim

Hodie de operationibus fasciculi didicimus, quomodo ad aperiendas et claudendas lima, data vel scribenda notitias de scriniis, functiones lima indicibus componendis, et finem lectionis documenti determinare. Si bonum censes dictum blogger, quaeso parvam similem relinquere et tibi gratias pro auxilio tuo