c/c++ÅàѵCÓïÑÔºËÐÄ֪ʶ×ܽá(¾Å)
¸üÐÂʱ¼ä:2016Äê10ÔÂ21ÈÕ16ʱ41·Ö À´Ô´:ÀÖÓã²¥¿ÍC++ÅàѵѧԺ ä¯ÀÀ´ÎÊý:
¾Å¡¢Îļþ²Ù×÷;
Êý¾ÝI/OÁ÷
#include <stdio.h>
1 fopen()º¯Êý£º´ò¿ªÎļþ
º¯ÊýÔÐÍ£ºFILE *fopen(char restrict *filename, char restrict *mode);
// restrict C99±ê×¼²ÅÒý½øµÄ£¬ÊôÓÚÀàÐÍÐÞÊηû£¬±íʾÐÞÊεÄÕâ¿éÄÚ´æ¿Õ¼äÖ»Äܱ»Õâ¸öÖ¸ÕëÒýÓúÍÐ޸쬳ý´ËÖ®Íâ±ðÎÞËû·¨¡£
²ÎÊý£º
filename: ÐèÒª´ò¿ªµÄÎļþ
mode: Îļþ´ò¿ª·½Ê½
r ÒÔÖ»¶ÁµÄ·½Ê½´ò¿ªÎļþ£¬Ç°ÌáÊÇÕâ¸öÎļþ±ØÐë´æÔÚ£¨Ö»Ð´ r ĬÈÏÊÇÎı¾Îļþ£©
r+ ÒԿɶÁ¿ÉдµÄ·½Ê½´ò¿ªÎļþ£¬Ç°ÌáÊÇÕâ¸öÎļþ±ØÐë´æÔÚ(ĬÈÏÊÇÎı¾Îļþ)¡£
rb ÒÔÖ»¶ÁµÄ·½Ê½´ò¿ªÒ»¸ö¶þ½øÖÆÎļþ£¬Ç°ÌáÊÇÕâ¸öÎļþ±ØÐë´æÔÚ¡£
rb+ ÒԿɶÁ¿ÉдµÄ·½Ê½´ò¿ªÒ»¸ö¶þ½øÖÆÎļþ£¬Ç°ÌáÊÇÕâ¸öÎļþ±ØÐë´æÔÚ¡£
w ÒÔֻдµÄ·½Ê½´ò¿ªÎļþ£¬Èç¹ûÕâ¸öÎļþ²»´æÔÚ£¬¾Í´´½¨Õâ¸öÎļþ£»Èç¹ûÕâ¸öÎļþ´æÔÚ£¬ÔòÇå¿ÕÄÚÈÝ¡£
w+ ÒԿɶÁ¿ÉдµÄ·½Ê½´ò¿ªÎļþ£¬Èç¹ûÕâ¸öÎļþ²»´æÔÚ£¬¾Í´´½¨Õâ¸öÎļþ£»Èç¹ûÕâ¸öÎļþ´æÔÚ£¬ÔòÇå¿ÕÄÚÈÝ¡£
wb ÒÔֻдµÄ·½Ê½´ò¿ªÒ»¸ö¶þ½øÖÆÎļþ£¬Èç¹ûÕâ¸öÎļþ²»´æÔÚ£¬¾Í´´½¨Õâ¸öÎļþ£»Èç¹ûÕâ¸öÎļþ´æÔÚ£¬ÔòÇå¿ÕÄÚÈÝ¡£
wb+ ÒԿɶÁ¿ÉдµÄ·½Ê½´ò¿ªÒ»¸ö¶þ½øÖÆÎļþ£¬Èç¹ûÕâ¸öÎļþ²»´æÔÚ£¬¾Í´´½¨Õâ¸öÎļþ£»Èç¹ûÕâ¸öÎļþ´æÔÚ£¬ÔòÇå¿ÕÄÚÈÝ¡£
a ÒÔ×·¼ÓµÄ·½Ê½´ò¿ªÖ»Ð´Îļþ£¬Èç¹ûÕâ¸öÎļþ²»´æÔÚ£¬¾Í´´½¨Õâ¸öÎļþ£»Èç¹ûÕâ¸öÎļþ´æÔÚ£¬ÔòÔÚÎļþβ²¿×·¼ÓÄÚÈÝ¡£
a+ ÒÔ×·¼ÓµÄ·½Ê½´ò¿ªÒ»¸ö¿É¶Á¿ÉдµÄÎļþ£¬Èç¹ûÕâ¸öÎļþ²»´æÔÚ£¬¾Í´´½¨Õâ¸öÎļþ£»Èç¹ûÕâ¸öÎļþ´æÔÚ£¬ÔòÔÚÎļþβ²¿×·¼ÓÄÚÈÝ¡£
ab ÒÔ×·¼ÓµÄ·½Ê½´ò¿ªÒ»¸ö¶þ½øÖÆÖ»Ð´Îļþ£¬Èç¹ûÕâ¸öÎļþ²»´æÔÚ£¬¾Í´´½¨Õâ¸öÎļþ£»Èç¹ûÕâ¸öÎļþ´æÔÚ£¬ÔòÔÚÎļþβ²¿×·¼ÓÄÚÈÝ¡£
ab+ ÒÔ×·¼ÓµÄ·½Ê½´ò¿ªÒ»¸ö¶þ½øÖƿɶÁ¿ÉдÎļþ£¬Èç¹ûÕâ¸öÎļþ²»´æÔÚ£¬¾Í´´½¨Õâ¸öÎļþ£»Èç¹ûÕâ¸öÎļþ´æÔÚ£¬ÔòÔÚÎļþβ²¿×·¼ÓÄÚÈÝ¡£
r(read): ¶Á;
w(write):д;
a(append)£º×·¼Ó;
+(plus):¶Á»òд£¬Ö÷ÒªÊÇÅäºÏr¡¢w¡¢aʹÓÃ;
t(text):Îı¾Îļþ;
b(binary)£º¶þ½øÖÆÎļþ
·µ»ØÖµ£ºÈç¹ûÎļþ˳Àû´ò¿ª£¬Ôò·µ»ØÖµÊÇÖ¸ÏòÕâ¸öÎļþÁ÷µÄÎļþÖ¸Õ룬
Èç¹ûÎļþ´ò¿ªÊ§°Ü£¬·µ»Ø NULL (void*)0
Ò»°ãÀ´Ëµ£¬Îļþ´ò¿ªÊ§°Ü»á×öÒ»¸öÎļþÖ¸Õë´íÎóÅжÏ
FILE *fp = fopen("c:\\code\\text.c", "w+");
if(NULL == fp)
{
//code
//exit(-1);
}
2 fgetc(); ºÍ fputc();
1) fgetc() Îļþ×Ö·û¶ÁÈ¡º¯Êý
ÔÐÍ£º int fgetc(FILE * stream);
²ÎÊý£º stream£º ÎļþÁ÷
·µ»ØÖµ£º ³É¹¦·µ»Ø»ñÈ¡µÄ×Ö·ûASCIIÂ룬ʧ°Ü·µ»Ø EOF(-1);
¾ÙÀý£º
char ch = fgetc(fp); // ´ÓfpÖ¸ÏòµÄÎļþÁ÷Àï½ÓÊÕÎļþÁ÷ÀïµÄµÚÒ»¸ö×Ö·û
2) fputc() Îļþ×Ö·ûдÈ뺯Êý
ÔÐÍ£º int fputc(int ch, FILE * stream);
²ÎÊý£º ch £º¾ÍÊÇдÈëµÄ×Ö·û£¬º¯ÊýÔÚÖ´ÐеÄʱºò£¬»á×Ô¶¯°Ñ ch ASCIIÂë ת»»³ÉÒ»¸ö unsigned char ÀàÐÍ¡£
stream: ÎļþÁ÷
·µ»ØÖµ£º ³É¹¦·µ»ØÊä³öµÄ×Ö·û£¬Ê§°Ü·µ»Ø EOF(-1);
¾ÙÀý£º
fputc(ch, fp); // °Ñ×Ö·ûchдÈëµ½ fp ËùÖ¸ÏòµÄÎļþÁ÷Àï¡£
3 fgets(); ºÍ fputs();
1) fgets() ¶ÁÈ¡Îļþ×Ö·û´®º¯Êý
ÔÐÍ£ºchar *fgets(char *str, int size, FILE* fp);
²ÎÊý£º str : ±£´æ´ÓfpÖ¸ÏòµÄÎļþÁ÷Àï¶ÁÈ¡µÄÒ»ÐÐ×Ö·û´®¡£
size: ´ÓÎļþÁ÷Àï¶ÁÈ¡µÄ×Ö·û´®²»³¬¹ý size ¸ö×Ö·û¡£( Ò»°ã»áʹÓÃsize - 1£¬ÁôÒ»¸ö×Ö·ûλÖøø '\0')
fp : ÎļþÖ¸Õë
·µ»ØÖµ£º³É¹¦·µ»Ø¶ÁÈ¡µÄ×Ö·û´®ËùÔÚµÄÄÚ´æÊ×µØÖ·£¬Ê§°Ü·µ»Ø NULL(0);
¾ÙÀý£º
char str[20] = { 0 };
fgets(str, 20 - 1, fp); // ´ÓfpÖ¸ÏòµÄÎļþÁ÷µÄµÚÒ»ÐÐÀï¶ÁÈ¡ 19¸ö×Ö·û£¬È»ºó·Åµ½×Ö·ûÊý×é strÀï¡£
2) fputs() дÈëÎļþ×Ö·û´®º¯Êý
ÔÐÍ£ºint fputs(char *str, FILE* fp);
²ÎÊý£º str: ҪдÈëµ½ÎļþÀï×Ö·û´®(²»°üÀ¨'\0')
fp: ÎļþÖ¸Õ룬³É¹¦Ð´ÈëÒ»¸ö×Ö·û´®ºó£¬ÎļþÖ¸Õë»á×Ô¶¯ºóÒÆ
·µ»ØÖµ£º³É¹¦ÎªÐ´ÈëµÄ×Ö·û¸öÊý£¬Ê§°ÜÔò·µ»Ø EOF(-1)¡£
¾ÙÀý£º
char str[20] = "Hello Kitty!";
fputs(str, fp); // Ïò fp Ö¸ÏòµÄÎļþÁ÷ÀïдÈëÒ»¸ö×Ö·û´® str£¬¾ßÌåÔõôд£¬¿´ mode ÊôÐÔ¡£
4 fprintf(); ºÍ fscanf();
1) fprintf() ½«¸ñʽ»¯ºóµÄÊý¾ÝдÈëµ½ÎļþÁ÷Àï
ÔÐÍ£º int fprintf(FILE *stream, char *format, argument...);
¾ÙÀý£º
int i = 10;
float f = 3.14;
char ch = 'C';
char str[10] = "haha";
fprintf(fp, "%d %f %c %s\n", i, f, ch, str); // ½«¸÷¸öÊý¾Ý°´¸ñʽдÈëµ½ÎļþÁ÷Àï
2) fscanf() ´ÓÎļþÁ÷Àï»ñÈ¡Êý¾Ý¸ñʽ»¯Ð´ÈëÊäÈëÁ÷Àï
ÔÐÍ£º int fscanf(FILE *stream, char *format, argument... );
¾ÙÀý£º
int i;
float f;
char ch;
char str[10];
fscanf(fp, "%d,%f", &i, &f);
// Èç¹û²»ÐèÒª´ÓÎļþÀïÃæÐ´Èë×Ö·û´®£¬ÄÇô¾Í¿ÉÒÔÓöººÅ»òÕ߯äËû·ûºÅÀ´·Ö¸ô
fscanf(fp, "%s%c", str, &ch);
// Èç¹ûÎļþÀïÐèҪдÈë×Ö·û´®£¬ÄÇô×Ö·û´®ÓëÆäËûÊý¾ÝÖ®¼äÖ»ÄÜÓÿոñºÍ»Ø³µÀ´·Ö¸ô
5 fread(); ºÍ fwrite(); ¶þ½øÖÆÎļþ¶Áдº¯Êý
º¯ÊýÔÐÍ£º
size_t fread(void *ptr, size_t size, size_t count, FILE* fp);
size_t fwrite(void *ptr, size_t size, size_t count, FILE* fp);
²ÎÊý£º ptr: ÊÇÒ»¸öÖ¸Õ룬¶ÔÓ¦ fread()À´Ëµ£¬ÊÇ´ÓÎļþÀï¶ÁÈëµÄÊý¾Ý´æ·ÅµÄµØÖ·;
¶ÔÓ¦ fwrite()À´Ëµ£¬ÊÇдÈëµ½ÎļþÀïµÄÊý¾Ý´æ·ÅµÄµØÖ·¡£
size: ÿ´ÎÒª¶ÁдµÄ×Ö½ÚÊý
count : ¶ÁдµÄ´ÎÊý
fp: ÎļþÖ¸Õë
·µ»ØÖµ£º ³É¹¦¶ÁÈ¡/дÈëµÄ×Ö½ÚÊý
¾ÙÀý£º
char str[] = { 0 };
fread(str, sizeof(char) * 10, 1, fp);
// ÿ´Î´ÓfpÖ¸ÏòµÄÎļþÖжÁÈ¡10¸ö×Ö½Ú´óС£¬·ÅÈë×Ö·ûÊý×é str ÖУ¬×ܹ²¶Á1´Î
fwrite(str, sizeof(char) * 10, 1, fp);
// ÿ´Î´ÓstrÀï»ñÈ¡ 10¸ö×Ö½Ú´óС£¬Ð´Èëµ½ fp Ö¸ÏòµÄÎļþÖУ¬×ܹ²Ð´1´Î
6 fseek(); ÎļþÖ¸Õë²Ù×÷º¯Êý
º¯ÊýÔÐÍ£º size_t fseek(FILE* fp, long offset, int whence);
²ÎÊý£º fp £º ÎļþÖ¸Õë
offset: Æ«ÒÆÁ¿£¬»ùÓÚÆðʼµãÆ«ÒÆÁË offset ¸ö×Ö½Ú
whence : Æðʼµã£¨Èý¸ö£©£º
SEEK_SET 0 Îļþ¿ªÍ·Î»ÖÃ
SEEK_CUR 1 µ±Ç°Î»ÖÃ
SEEK_END 2 Îļþ½áβλÖÃ
¾ÙÀý
fseek(fp, 0, SEEK_END);
// ½«ÎļþÖ¸ÕëÖ¸ÏòÎļþ½á⣬²¢Æ«ÒÆÁË 0 ¸ö×Ö½Ú£¬Ò²¾ÍÊÇÖ±½Ó½«ÎļþÖ¸ÕëÖ¸ÏòÎļþ½áβ
fseek(fp, -10, SEEK_CUR);
// ½«ÎļþÖ¸ÕëÖ¸Ïòµ±Ç°Î»Ö㬲¢Æ«ÒÆÁË -10 ¸ö×Ö½Ú£¬Ò²¾ÍÊǽ«ÎļþÖ¸ÕëÍùÇ°ÒÆ¶¯10¸ö×Ö½Ú
7 ftell(); ÎļþÖ¸Õë²Ù×÷º¯Êý
º¯ÊýÔÐÍ£º long ftell(FILE* fp);
²ÎÊý£º fp ÎļþÖ¸Õë
·µ»ØÖµ£º·µ»ØÎļþÖ¸Õ뵱ǰλÖ㬻ùÓÚÎļþ¿ªÍ·µÄÆ«ÒÆ×Ö½ÚÊý£¬
¾ÙÀý£º long len = ftell(fp);
// ·µ»ØÎļþÖ¸Õ뵱ǰλÖ㬻ùÓÚÎļþ¿ªÍ·µÄÆ«ÒÆ×Ö½ÚÊý£¬±£´æµ½ len Àï¡£
8 rewind(); ÎļþÖ¸Õë²Ù×÷º¯Êý
º¯ÊýÔÐÍ£º void rewind(FILE* stream);
²ÎÊý£º fp ÎļþÖ¸Õë
¾ÙÀý£º rewind(fp);
// ½«ÎļþÖ¸ÕëÖØÐÂÖ¸ÏòI/OÁ÷£¨ÎļþÁ÷£©µÄ¿ªÍ·¡£
stream > istream / ostream -> fstream -> sstream
6\7\8 ´óÀý×Ó
FILE *fp = fopen("C:\\code\\a.txt", "r+");
fseek(fp, 0, SEEK_END); // ½«ÎļþÖ¸ÕëÖ¸ÏòÎļþ½áβ
long len = ftell(fp); // »ñÈ¡ÎļþÖ¸ÕëλÖ㬵õ½ÎļþµÄ´óС(Byte)
rewind(fp); // ½«ÎļþÖ¸ÕëÖØÐÂÖ¸ÏòÎļþ¿ªÍ·
9 fflush(); Çå¿ÕÊý¾ÝÁ÷ÀïµÄÊý¾Ý
º¯ÊýÔÐÍ£º void fflush(FILE* stream);
²ÎÊý£º stream Êý¾ÝÁ÷
¾ÙÀý£º
fflush(fp); // Çå¿ÕÎļþÁ÷
fflush(stdin); // Çå¿ÕÊäÈëÁ÷
fflush(stdout); // Çå¿ÕÊä³öÁ÷
10 int stat(const char *path, struct stat *buf);
// ×ÔÐв¹³ä
11 rename(); ºÍ remove();
rename(FILE* filename1, FILE* filename2);
rename("old_name.txt", "new_name.txt");
// °Ñold_name.txt ÖØÃüÃûΪ new_name.txt
remove(FILE* filename);
remove("C:\\code\\a.txt");
// ½« ¾ø¶Ô·¾¶Ï嵀 a.txt Îļþɾ³ý
12 feof();
ÔÐÍ£º int feof(FILE* fp);
²ÎÊý£º fp ÎļþÖ¸Õë
·µ»ØÖµ£º Ò»µ©ÎļþÖ¸ÕëÖ¸ÏòÎļþ½á⣬¾Í·µ»ØÒ»¸öÕæÖµ£»·ñÔò·µ»Ø·ÇÕæÖµ(0)
1. Õâ¸öº¯Êý´ïµ½Îļþ½áβµÄʱºò£¬·µ»ØµÄÊÇÒ»¸öÕæÖµ£¬ËùÒÔÔÚ×öÅжϵÄʱºòҪעÒâ !feof(fp)
2. Õâ¸öº¯Êý±ØÐë¶ÔÎļþ½øÐйýÒ»´Î¶Áд²Ù×÷²Å»áÉúЧ£¬Ò²¾ÍÊÇ˵ÄÄÅÂÕâ¸öÎļþÊǿյģ¬Ò²±ØÐë¶Áдһ´Î£¬feof()²Å»á·µ»ØÕæÖµ¡£
Îļþ½áÊøÊÇÒ»¸ö±êʶ·û£¬Ã¿´Î¶ÔÎļþ¶Áд¶¼»áÐÞ¸ÄÕâ¸ö±êʶ·ûµÄλÖ㬶ÔÎļþ¶Áдһ´Î£¬Îļþ±êʶ·û²Å»á±»ÕÒµ½£¬feof()×ö³ö·µ»Ø²Ù×÷¡£
13 fclose();
ÔÐÍ£º int flcose(FILE* fp);
²ÎÊý£º fp ÎļþÖ¸Õë
·µ»ØÖµ£º Èç¹û³É¹¦ÊÍ·Å£¬·µ»Ø 0£¬ ·ñÔò·µ»Ø EOF(-1);
fclose(fp); ±íʾÊÍ·ÅÎļþÖ¸ÕëºÍÏà¹ØµÄÎļþ»º³åÇø£¬ÎļþÖ¸Õë²»ÔٺϷ¨Ö¸ÏòÄÇ¿éÇøÓò£¬µ«ÊDz»´ú±íÇå¿Õ¶ÔÓ¦µÄÇøÓò¡£
UTF-8 ±àÂë¸ñʽÏ һ¸öºº×Ö 3 ¸ö×Ö½Ú
GBK ±àÂë¸ñʽÏ һ¸öºº×Ö 2 ¸ö×Ö½Ú
// UTF-8 Ï ºº×ÖÄæÖÃÔÀí
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[] = "°¢»ùÃ×µÂ";
int len = strlen(str);
// printf("%c%c\n", str[0], str[1]); // ´òÓ¡"°¢"
for (int i = len - 1; i > 0; i -= 3) // UTF-8 ±àÂëÏÂÊÇ3¸ö×Ö½Ú£¬GBKÏÂÊÇ2¸ö×Ö½Ú
{
printf("%c%c\n", str[i - 1], str[i]);
}
return 0;
}
²»Í¬²Ù×÷ϵͳµÄÐÐβ±êÖ¾£º
CR LF \ CR \ LF
CR ÊÇ '\r' »Ø³µ
LF ÊÇ '\n' »»ÐÐ
ÔÚDOSºÍNTÄں˵ÄWindowsÏ£¬²ÉÓõÄÊÇ »Ø³µ+»»ÐÐ(CR LF '\r''\n') À´±íʾÏÂÒ»ÐеĿªÊ¼
ÔÚUnix/LinuxÏ£¬²ÉÓõÄÊÇ »»ÐÐ(LF '\n') À´±íʾÏÂÒ»ÐеĿªÊ¼
ÔÚMacintoshÏÂ(OS X) £¬²ÉÓõÄÊÇ »Ø³µ(CR '\r') À´±íʾÏÂÒ»ÐеĿªÊ¼
±¾ÎİæÈ¨¹éÀÖÓã²¥¿ÍC++ÅàѵѧԺËùÓУ¬»¶Ó×ªÔØ£¬×ªÔØÇë×¢Ã÷×÷Õß³ö´¦¡£Ð»Ð»£¡
×÷ÕߣºÀÖÓã²¥¿ÍC/C++ÅàѵѧԺ
Ê×·¢£ºhttp://www.itcast.cn/c/