&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
%POHLVO 4IJO&NCFEEFE�4PGUXBSF�-BCPSBUPSZ4VOHLZVOLXBO�6OJWFSTJUZIUUQ���OZY�TLLV�BD�LS�
'JMF�*�0�BOE�&YBNQMFT
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
• "�6OJY�GJMF�JT�B�TFRVFODF�PG�N CZUFT��#� �#� ������ �#L ������ �#N��• "MM�*�0�EFWJDFT�BSF�SFQSFTFOUFE�BT�GJMFT
– �EFW�TEB����� IBSE�EJTL�QBSUJUJPO– �EFW�UUZ����� UFSNJOBM
• &WFO�UIF�LFSOFM�JT�SFQSFTFOUFE�BT�B�GJMF– �EFW�LNFN LFSOFM�NFNPSZ�JNBHF�– �QSPD����������� LFSOFM�EBUB�TUSVDUVSFT
6OJY�'JMFT
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
• 3FHVMBS�GJMF– #JOBSZ�PS�UFYU�GJMF– 6OJY�EPFT�OPU�LOPX�UIF�EJGGFSFODF�
• %JSFDUPSZ�GJMF– "�GJMF�UIBU�DPOUBJOT�UIF�OBNFT�BOE�MPDBUJPOT�PG�PUIFS�GJMFT�
• %FWJDF�TQFDJBM�GJMFT– 5FSNJOBMT�DIBSBDUFS�TQFDJBM�BOE�EJTLT�CMPDL�TQFDJBM
• '*'0�OBNFE�QJQF– "�GJMF�UZQF�VTFE�GPS�JOUFS�QSPDFTT�DPNNVOJDBUJPO
• 4PDLFU– "�GJMF�UZQF�VTFE�GPS�OFUXPSL�DPNNVOJDBUJPO�CFUXFFO�QSPDFTTFT
6OJY�'JMF�5ZQFT
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
• $IBSBDUFSJTUJDT– 5IF�FMFHBOU�NBQQJOH�PG�GJMFT�UP�EFWJDFT�BMMPXT�UIF�LFSOFM�UP�FYQPSU�TJNQMF�JOUFSGBDF�DBMMFE�6OJY�*�0�– "MM�JOQVU�BOE�PVUQVU�JT�IBOEMFE�JO�B�DPOTJTUFOU�BOE�VOJGPSN�XBZ�ˑCZUF�TUSFBN˒
• #BTJD�6OJY�*�0�PQFSBUJPOT�TZTUFN�DBMMT���– 0QFOJOH�BOE�DMPTJOH�GJMFT
• open() BOE�close()– $IBOHJOH�UIF�DVSSFOU�GJMF�QPTJUJPO TFFL
• lseek() – 3FBEJOH�BOE�XSJUJOH�B�GJMF
• read() BOE�write()
6OJY�*�0
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
• 0QFOJOH�B�GJMF�JOGPSNT�UIF�LFSOFM�UIBU�ZPV�BSF�HFUUJOH�SFBEZ�UP�BDDFTT�UIBU�GJMF�0QFOJOH�'JMFT
• 3FUVSOT�B�TNBMM�JEFOUJGZJOH�JOUFHFS�GJMF�EFTDSJQUPS– fd == -1 JOEJDBUFT�UIBU�BO�FSSPS�PDDVSSFE
• &BDI�QSPDFTT�DSFBUFE�CZ�B�6OJY�TIFMM�CFHJOT�MJGF�XJUI�UISFF�PQFO�GJMFT�BTTPDJBUFE�XJUI�B�UFSNJOBM
0 TUBOEBSE�JOQVU1 TUBOEBSE�PVUQVU2 TUBOEBSE�FSSPS
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
• $MPTJOH�B�GJMF�JOGPSNT�UIF�LFSOFM�UIBU�ZPV�BSF��GJOJTIFE�BDDFTTJOH�UIBU�GJMF�
$MPTJOH�'JMFT
• $MPTJOH�BO�BMSFBEZ�DMPTFE�GJMF�JT�B�SFDJQF�GPS�EJTBTUFSJO�UISFBEFE�QSPHSBNT�NPSF�PO�UIJT�MBUFS• .PSBM��"MXBZT�DIFDL�SFUVSO�DPEFT �FWFO�GPS�TFFNJOHMZ�CFOJHO�GVODUJPOT�TVDI�BT�close()
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
• 3FBEJOH�B�GJMF�DPQJFT�CZUFT�GSPN�UIF�DVSSFOU�GJMF�QPTJUJPO�UP�NFNPSZ �BOE�UIFO�VQEBUFT�GJMF�QPTJUJPO�3FBEJOH�'JMFT
• 3FUVSOT�OVNCFS�PG�CZUFT�SFBE�GSPN�GJMF�fd JOUP�buf• nbytes < 0 JOEJDBUFT�UIBU�BO�FSSPS�PDDVSSFE�• 4IPSU�DPVOUT�nbytes < sizeof(buf)�BSF�QPTTJCMF�BOE�BSF�OPUFSSPST�
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
• 8SJUJOH�B�GJMF�DPQJFT�CZUFT�GSPN�NFNPSZ�UP�UIF�DVSSFOU�GJMF�QPTJUJPO �BOE�UIFO�VQEBUFT�DVSSFOU�GJMF�QPTJUJPO�8SJUJOH�'JMFT
• 3FUVSOT�OVNCFS�PG�CZUFT�XSJUUFO�GSPN�buf UP�GJMF�fd�• nbytes < 0 JOEJDBUFT�UIBU�BO�FSSPS�PDDVSSFE�• "T�XJUI�SFBET �TIPSU�DPVOUT�BSF�QPTTJCMF�BOE�BSF�OPU�FSSPST�
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
���
• "O�PGGTFU�PG�BO�PQFOFE�GJMF�DBO�CF�TFU�FYQMJDJUMZ�CZ�DBMMJOH�lseek()'JMF�0GGTFU
• 3FUVSOT�UIF�OFX�PGGTFU�PG�UIF�GJMF�fd�• nbytes < 0 JOEJDBUFT�UIBU�BO�FSSPS�PDDVSSFE�• "O�PGGTFU�DBO�CF�TFU�CFZPOE�UIF�FOE�PG�UIF�GJMF�
– *G�EBUB�JT�XSJUUFO�BU�UIBU�QPJOU �B�GJMF�ˑIPMF˒�JT�DSFBUFE�
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• $PQZJOH�TUBOEBSE�JOQVU�UP�TUBOEBSE�PVUQVU�POF�CZUF�BU�B�UJNF�
6OJY�*�0�&YBNQMF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• 4IPSU�DPVOUT�DBO�PDDVS�JO�UIFTF�TJUVBUJPOT�– &ODPVOUFSJOH�&0'�FOE�PG�GJMF�PO�SFBET�– 3FBEJOH�UFYU�MJOFT�GSPN�B�UFSNJOBM�– 3FBEJOH�BOE�XSJUJOH�OFUXPSL�TPDLFUT�PS�6OJY�QJQFT�
• 4IPSU�DPVOUT�EPFT�OPU�PDDVS�JO�UIFTF�TJUVBUJPOT�– 3FBEJOH�GSPN�EJTL�GJMFT�FYDFQU�GPS�&0'– 8SJUJOH�UP�EJTL�GJMFT�
• )PX�TIPVME�ZPV�EFBM�XJUI�TIPSU�DPVOUT�JO�ZPVS�DPEF – 0OF�XBZ�JT�UP�VTF�UIF�3*0�3PCVTU�*�0�QBDLBHF�GSPN�ZPVSUFYUCPPLˏT�csapp.c GJMF�"QQFOEJY�#�
%FBMJOH�XJUI�4IPSU�$PVOUT
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• %BUB�BCPVU�EBUB �JO�UIJT�DBTF�GJMF�EBUB�– .BJOUBJOFE�CZ�LFSOFM �BDDFTTFE�CZ�VTFST�XJUI�UIF�stat BOE�fstat GVODUJPOT�
'JMF�.FUBEBUB
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����"DDFTTJOH�'JMF�.FUBEBUB
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• 5IF�$�TUBOEBSE�MJCSBSZ�libc.a�DPOUBJOT�B�DPMMFDUJPO�PG�IJHIFS�MFWFM�TUBOEBSE�*�0�GVODUJPOT– %PDVNFOUFE�JO�"QQFOEJY�#�PG�,�3�
• &YBNQMFT�PG�TUBOEBSE�*�0�GVODUJPOT�– 0QFOJOH�BOE�DMPTJOH�GJMFT� fopen BOE�fclose– 3FBEJOH�BOE�XSJUJOH�CZUFT fread BOE�fwrite– 3FBEJOH�BOE�XSJUJOH�UFYU�MJOFT� fgets BOE�fputs– 'PSNBUUFE�SFBEJOH�BOE�XSJUJOH� fscanf BOE�fprintf
4UBOEBSE�*�0�'VODUJPOT
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• 4UBOEBSE�*�0�NPEFMT�PQFO�GJMFT�BT�TUSFBNT– "CTUSBDUJPO�GPS�B�GJMF�EFTDSJQUPS�BOE�B�CVGGFS�JO�NFNPSZ
• $�QSPHSBNT�CFHJO�MJGF�XJUI�UISFF�PQFO�TUSFBNT�EFGJOFE�JO�stdio.h– TUEJO TUBOEBSE�JOQVU– TUEPVU TUBOEBSE�PVUQVU– TUEFSS TUBOEBSE�FSSPS
4UBOEBSE�*�0�4USFBNT
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• 4UBOEBSE�*�0�GVODUJPOT�VTF�CVGGFSFE�*�0#VGGFSJOH�JO�4UBOEBSE�*�0
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• 4UBOEBSE�*�0�BSF�JNQMFNFOUFE�VTJOH�MPX�MFWFM�6OJY�*�0�6OJY�*�0�WT��4UBOEBSE�*�0
$�"QQMJDBUJPO�1SPHSBN
6OJY�*�0�'VODUJPOTBDDFTTFE�WJB�TZTUFN�DBMMT
4UBOEBSE�*�0'VODUJPOT 3*0'VODUJPOT
fopen fdopen
fread fwrite
fscanf fprintf
sscanf sprint
fgets fputs
fflush fseek
fclose
open read
write lseek
stat close
Rio_readn
Rio_written
Rio_readinitb
Rio_readlineb
Rio_readnb
8IJDI�POFT�TIPVME�ZPV�VTF�JO�ZPVS�QSPHSBNT
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• 1SPT– 5IF�NPTU�HFOFSBM�BOE�MPXFTU�PWFSIFBE�GPSN�PG�*�0�
• "MM�PUIFS�*�0�QBDLBHFT�BSF�JNQMFNFOUFE�PO�UPQ�PG�6OJY�*�0GVODUJPOT�– 6OJY�*�0�QSPWJEFT�GVODUJPOT�GPS�BDDFTTJOH�GJMF�NFUBEBUB�
• $POT– 4ZTUFN�DBMM�PWFSIFBET�GPS�TNBMM�TJ[FE�*�0�– %FBMJOH�XJUI�TIPSU�DPVOUT�JT�USJDLZ�BOE�FSSPS�QSPOF�– &GGJDJFOU�SFBEJOH�PG�UFYU�MJOFT�SFRVJSFT�TPNF�GPSN�PGCVGGFSJOH �BMTP�USJDLZ�BOE�FSSPS�QSPOF�– 5IFTF�JTTVFT�BSF�BEESFTTFE�CZ�UIF�TUBOEBSE�*�0�
1SPT�$POT�PG�6OJY�*�0
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• 1SPT– #VGGFSJOH�JODSFBTFT�FGGJDJFODZ�CZ�EFDSFBTJOH�UIFOVNCFS�PG�read() BOE�write() TZTUFN�DBMMT�– 4IPVU�DPVOUT�BSF�IBOEMFE�BVUPNBUJDBMMZ�
• $POT– 1SPWJEFT�OP�GVODUJPO�GPS�BDDFTTJOH�GJMF�NFUBEBUB�– 4UBOEBSE�*�0�JT�OPU�BQQSPQSJBUF�GPS�JOQVU�BOE�PVUQVU�PO�OFUXPSL�TPDLFUT�
• #VU�UIFSF�JT�B�XBZ�VTJOH�fdopen()
1SPT�$POT�PG�4UBOEBSE�*�0
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• 8IFO�UP�VTF�TUBOEBSE�*�0– 8IFO�XPSLJOH�XJUI�EJTL�PS�UFSNJOBM�GJMFT�
• 8IFO�UP�VTF�SBX�6OJY�*�0�– 8IFO�ZPV�OFFE�UP�GFUDI�GJMF�NFUBEBUB�– 8IFO�ZPV�SFBE�PS�XSJUF�OFUXPSL�TPDLFUT�PS�QJQFT�– *O�SBSF�DBTFT�XIFO�ZPV�OFFE�BCTPMVUF�IJHIFTUQFSGPSNBODF��
8IFO�UP�VTF�XIBU
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����&YBNQMF�����
char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;
fd = open(filename, O_RDWR | O_CREAT, 0755);read(fd, buffer, 6);read(fd, buffer + 6, 2);
lseek(fd, -2, SEEK_CUR);buffer[0] = ‘\n’;write(fd, buffer, 1);
lseek(fd, 8, SEEK_SET);strcpy(buffer, “How”);write(fd, buffer, 3);
close(fd);
File state (FD: 3)
path: “hello-dos.txt”position: 0size: 20
H e l l o . \r \n
W h o a r e
y o u ? EOF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����&YBNQMF�����
char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;
fd = open(filename, O_RDWR | O_CREAT, 0755);read(fd, buffer, 6);read(fd, buffer + 6, 2);
lseek(fd, -2, SEEK_CUR);buffer[0] = ‘\n’;write(fd, buffer, 1);
lseek(fd, 8, SEEK_SET);strcpy(buffer, “How”);write(fd, buffer, 3);
close(fd);
File state (FD: 3)path: “hello-dos.txt”position: 6size: 20
H e l l o . \r \n
W h o a r e
y o u ? EOF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����&YBNQMF�����
char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;
fd = open(filename, O_RDWR | O_CREAT, 0755);read(fd, buffer, 6);read(fd, buffer + 6, 2);
lseek(fd, -2, SEEK_CUR);buffer[0] = ‘\n’;write(fd, buffer, 1);
lseek(fd, 8, SEEK_SET);strcpy(buffer, “How”);write(fd, buffer, 3);
close(fd);
File state (FD: 3)path: “hello-dos.txt”position: 8size: 20
H e l l o . \r \n
W h o a r e
y o u ? EOF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����&YBNQMF�����
char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;
fd = open(filename, O_RDWR | O_CREAT, 0755);read(fd, buffer, 6);read(fd, buffer + 6, 2);
lseek(fd, -2, SEEK_CUR);buffer[0] = ‘\n’;write(fd, buffer, 1);
lseek(fd, 8, SEEK_SET);strcpy(buffer, “How”);write(fd, buffer, 3);
close(fd);
File state (FD: 3)path: “hello-dos.txt”position: 6size: 20
H e l l o . \r \n
W h o a r e
y o u ? EOF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����&YBNQMF�����
char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;
fd = open(filename, O_RDWR | O_CREAT, 0755);read(fd, buffer, 6);read(fd, buffer + 6, 2);
lseek(fd, -2, SEEK_CUR);buffer[0] = ‘\n’;write(fd, buffer, 1);
lseek(fd, 8, SEEK_SET);strcpy(buffer, “How”);write(fd, buffer, 3);
close(fd);
File state (FD: 3)path: “hello-dos.txt”position: 7size: 20
H e l l o . \n \n
W h o a r e
y o u ? EOF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����&YBNQMF�����
char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;
fd = open(filename, O_RDWR | O_CREAT, 0755);read(fd, buffer, 6);read(fd, buffer + 6, 2);
lseek(fd, -2, SEEK_CUR);buffer[0] = ‘\n’;write(fd, buffer, 1);
lseek(fd, 8, SEEK_SET);strcpy(buffer, “How”);write(fd, buffer, 3);
close(fd);
File state (FD: 3)path: “hello-dos.txt”position: 8size: 20
H e l l o . \n \n
W h o a r e
y o u ? EOF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����&YBNQMF�����
char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;
fd = open(filename, O_RDWR | O_CREAT, 0755);read(fd, buffer, 6);read(fd, buffer + 6, 2);
lseek(fd, -2, SEEK_CUR);buffer[0] = ‘\n’;write(fd, buffer, 1);
lseek(fd, 8, SEEK_SET);strcpy(buffer, “How”);write(fd, buffer, 3);
close(fd);
File state (FD: 3)path: “hello-dos.txt”position: 11size: 20
H e l l o . \n \n
H o w a r e
y o u ? EOF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����&YBNQMF�����
char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;
fd = open(filename, O_RDWR | O_CREAT, 0755);read(fd, buffer, 6);read(fd, buffer + 6, 2);
lseek(fd, -2, SEEK_CUR);buffer[0] = ‘\n’;write(fd, buffer, 1);
lseek(fd, 8, SEEK_SET);strcpy(buffer, “How”);write(fd, buffer, 3);
close(fd);
File state (FD: 3)path: “hello-dos.txt”CLOSED
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����&YBNQMF�����
char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;
fd = open(filename, O_WRONLY);lseek(fd, 1, SEEK_END);
strcpy(buffer, “!\n”);write(fd, buffer, 2);
close(fd);
File state (FD: 3)path: “hello-dos.txt”type: Regularmode: write onlyposition: 0size: 20
H e l l o . \r \n
W h o a r e
y o u ? EOF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����&YBNQMF�����
char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;
fd = open(filename, O_WRONLY);lseek(fd, 1, SEEK_END);
strcpy(buffer, “!\n”);write(fd, buffer, 2);
close(fd);
File state (FD: 3)path: “hello-dos.txt”type: Regularmode: write onlyposition: 21size: 20
H e l l o . \r \n
W h o a r e
y o u ? EOF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����&YBNQMF�����
char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;
fd = open(filename, O_WRONLY);lseek(fd, 1, SEEK_END);
strcpy(buffer, “!\n”);write(fd, buffer, 2);
close(fd);
File state (FD: 3)path: “hello-dos.txt”type: Regularmode: write onlyposition: 23size: 23
H e l l o . \r \n
W h o a r e
y o u ? \0 ! \n EOF
EBUB IPMF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����&YBNQMF�����
char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;
fd = open(filename, O_WRONLY);lseek(fd, 1, SEEK_END);
strcpy(buffer, “!\n”);write(fd, buffer, 2);
close(fd);
File state (FD: 3)path: “hello-dos.txt”type: RegularCLOSEDposition: 23size: 23
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• -BC�FYFSDJTF���– xcat QSJOUT�B�GJMF�PO�TUBOEBSE�PVUQVU– xcp DPQJFT�UIF�DPOUFOUT�PG�B�GJMF�JOUP�B�OFX�GJMF– #BTJDBMMZ �FYFDVUJOH�xcat BOE�xcpXJMM�CF�UIF�TBNF�BT�FYFDVUJOH�cat BOE�cpXJUIPVU�BOZ�PQUJPOT �SFTQFDUJWFMZ– :PVS�KPC�JT�UP�NBLF�xcat BOE�xcp VUJMJUJFT�CZ�VTJOH�TZTUFN�DBMMT�QSPWJEFE�CZ�-JOVY
-BC�&YFSDJTF
&NCFEEFE�4PGUXBSF�-BC��!�4,,6
����
• -BC�FYFSDJTF���– -FUˏT�DIBOHF�UIF�DPOUFOUT�PG�B�UFYU�GJMF– :PV�DBO�VTF�UIF�MJCSBSZ�ZPVˏWF�JNQMFNFOUFE�JO�1"��– &WFSZ�6OJY�*�0�ZPVˏWF�MFBSOU�TIPVME�CF�VTFE�JO�ZPVS�DPEF– $PNNBOE�MJOF�BSHVNFOUT
-BC�&YFSDJTF
$ ./convert sentence.txt word.txt result.txt
Top Related