一、fgetc函數的用法
int fgetc ( FILE * stream );
fgetc函數是標準輸入輸出庫中的函數,用於從指定文件流中讀取一個字元。該函數的返回值為讀取的字元(unsigned char),讀取失敗或讀到文件結尾時返回EOF。
下面是一個例子,用於從標準輸入流中讀取字元:
#include <stdio.h>
int main () {
int c;
puts ("Please input characters:");
do {
c = fgetc (stdin);
putchar(c);
} while(c != EOF);
return 0;
}
運行結果如下:
Please input characters:
hello world
hello world
二、dget函數
dget函數是fgetc函數的一個變種,其參數是一個雙精度浮點型指針,用於讀取二進位文件中的數據。這裡不再贅述其用法,有興趣的讀者可以查看相關資料。
三、fgets函數的用法
char * fgets ( char * str, int num, FILE * stream );
fgets函數是另一個用於從文件流中讀取字元串的函數。與fgetc函數不同,fgets函數可以按行讀取,其參數列表依次為字元串緩衝區、最多讀取的字元數和文件流指針。
下面的例子展示了fgets函數讀取文件時的用法:
#include <stdio.h>
int main () {
char str[60];
FILE * fp;
fp = fopen ("test.txt","r");
while(fgets(str,60,fp) != NULL) {
printf("%s",str);
}
fclose(fp);
return 0;
}
運行結果如下:
This is a test file.
It contains two lines of text.
四、fgets函數
fgets函數的功能與gets函數類似,用於從文件流中讀取一行數據。但與gets函數不同的是,fgets函數會把換行符讀取進去,並在字元串末尾添加’\0’。
下面的例子演示了如何使用fgets函數:
#include <stdio.h>
int main () {
char str[60];
printf ("Enter your name: ");
fgets (str, 60, stdin);
printf ("Your name is: %s", str);
return 0;
}
運行結果如下:
Enter your name: John Doe
Your name is: John Doe
五、fgets函數功能
fgets函數還有一個很有用的功能是指定分隔符,可以實現類似於C#中的string.Split函數的效果。
下面的例子展示了如何使用fgets函數分隔字元串:
#include <stdio.h>
#include <string.h>
int main () {
char str[] = "This,is,a,test,string.";
const char delim[] = ",";
char *token;
token = strtok(str, delim);
while(token != NULL) {
printf("%s\n",token);
token = strtok(NULL, delim);
}
return 0;
}
運行結果如下:
This
is
a
test
string.
六、freqz函數matlab
這裡提到的freqz函數不是C語言庫函數,而是matlab中的函數,用於繪製數字濾波器的頻率響應曲線。這裡不再贅述其用法,有興趣的讀者可以查閱相關資料。
七、fgets函數讀取文件
fgets函數讀取文件時需注意文件的字符集編碼和換行符的不同,在不同的編碼和操作系統下,換行符可能是’\r’、’\n’或’\r\n’。為了保證程序的通用性,可以使用以下代碼來兼容不同編碼和操作系統下的換行符:
char *fgets(char *s, int size, FILE *stream) {
char *p = s;
int count = size - 1;
while(count-- > 0) {
int c = fgetc(stream);
if(c == EOF) {
if(p == s) {
return NULL;
}
break;
}
*p++ = c;
if(c == '\n') {
break;
}
}
*p = '\0';
return s;
}
該函數會從文件流中讀取一個字元,如果該字元是換行符,則結束讀取並返回讀取的字元串,否則繼續讀取,直到讀取的字元數達到指定的最大值為止。
綜上所述,fgetc函數是C語言標準輸入輸出庫中的一個重要函數,可用於從文件流中讀取單個字元。在處理字元串時,也可以使用fgets函數來按行讀取文件內容,分隔字元串等。
原創文章,作者:AAVJ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/141848.html