标准IO实现
1. 创建并打开文件
fopen
用于打开或创建文件,返回一个文件流指针 FILE *
int main()
{FILE *fp = fopen("./1.txt","w");if(NULL == fp){printf("fopen error\n");return -1;}printf("fopen success\n");fclose(fp);return 0;
}
说明:
"w"
模式:如果文件存在则清空,不存在则创建
打开失败 fopen
返回 NULL
(可能是路径不存在或权限不足)
文件使用完后必须 fclose
2. 写入字符串(逐字符写入)
int main()
{FILE *fp = fopen("./1.txt","w");if(NULL == fp){printf("fopen error\n");return -1;}printf("fopen success\n");char c[] = "Hello World";char *pstr = "Hello World";int len = strlen(c);int i;for(i = 0;i < len;++i){fputc(*(pstr + i),fp);}fclose(fp);return 0;
}
3. 逐字符读取文件
int main()
{FILE *fp = fopen("./2.txt","r");if(NULL == fp){printf("error\n");return -1;}int ret = fgetc(fp);if(EOF == ret){printf("end of file or error\n");return -1;}while(ret != EOF){printf("%c",ret);ret = fgetc(fp); }puts("");return 0;
}
4. 按行读取文件(fgets)
int main(int argc,const char *argv[])
{if(2 != argc){printf("Usage : ./a.out <srcfile>\n");return -1;}FILE *fp = fopen(argv[1],"r");if(NULL == fp){printf("fopen error \n");return -1;}char s[100] = {0};char *p = NULL;while(1){p = fgets(s,sizeof(s),fp);if(NULL == p){break;}printf("%s",s);}printf("\n");fclose(fp);return 0;
}
说明:
fgets
:读取一行数据(包含换行符 \n
)
适合按行读取文本
文件参数:缓冲区 s
缓冲区大小 sizeof(s)
文件流指针 fp
5. 直接写入字符串(fputs)
int main(int argc, const char *argv[])
{FILE *fp = fopen("1.txt", "w");if (NULL == fp){printf("fopen error\n");return -1;}fputs("hello world", fp);char str[32] = {"how are you"};fputs(str, fp);char *pstr = "hello world";fputs(pstr, fp);fclose(fp);return 0;
}
说明:
fputs
:直接写入一个字符串(不自动添加换行符)
适合快速写入字符串数据