1. Linux系統調用,文件的描述符使用的是一個整數,庫函數訪問文件使用FILE類型的指針去指向描述文件;
2. 庫函數不隨系統平台而變,即不管win還是Linux都適用;
庫函數 - 讀文件
size_t fread(void *ptr, size_t size, size_t n, FILE *stream)
功能:從stream指向的文件中讀取n個字段,每個字段為size字節,並將讀取的數據放入ptr所指向的字符數組中,返回實際已讀取的字節數。(讀出來的數據量為size*n)
庫函數 - 寫文件
size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream)
功能:從緩沖區ptr所指向的數組中把n個字段寫到stream指向的文件中,每個字段長為size個字節,返回實際寫入的字段數。
庫函數 - 創建和打開
FILE *fopen(const char *filename, const char *mode)
filename:打開的文件名(包含路徑,缺省為當前路徑)
mode:打開模式
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
char ch;
char fname[30];
printf("Please input the file name:");
scanf("%s", &fname);
fp=fopen(fname, "r"); //以只讀方式打開
if(fp==NULL){ //打開失敗
printf("Open failed.\n");
exit(1);
}
while((ch=getc(fp))!=EOF) //一個字符一個字符遍歷
{
putchar(ch); //輸出ch傳入的字符
}
fclose(fp); //關閉文件
return 0;
}
讀字符:
fgetc 獲取字符:
fputc 輸出字符:
#include <stdio.h>
#include <string.h>
int main()
{
char msg[] = "Hello, linuxdba";
// int i;
FILE *fp;
char ch;
fp = fopen("/etc/passwd", "r");
while ((ch = fgetc(fp)) != EOF)
//while (msg[i]&&(i < strlen(msg))) // ok,pass!
{
fputc(ch, stdout); //什麼意思?
// i ++;
}
fclose(fp);
return 0;
}
路徑獲取
char *getcwd(char *buffer, size_t size)
功能:提供一個size大小的buffer,getcwd會把當前的路徑名拷貝到buffer中。如果buffer太小,函數會返回-1.