一、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函数来按行读取文件内容,分隔字符串等。