C 语言基础学习
C语言编译系统在表示逻辑运算结果时,以数值1代表“真”, 0代表“假”,但在判断一个量是否为真时,以0代表“假”,以非0代表“真”。即将一个非零的数值认作为“真”。
gets()、fgets()、puts()、fputs() 都是字符串处理函数,但它们都包含在 stdio.h 头文件中,并不是包含在 string.h 头文件中。
[1] fopen函数 //fopen()打开文件,fclose()关闭文件。
fopen函数的功能是打开一个文件,其调用的一般形式为:
文件指针名 = fopen(文件名,使用文件方式)。
FILE *fp; fp=fopen("filename","r"); 其意义是在当前目录下打开文件filename,只允许进行“读”操作,并使fp指向该文件。 又如: FILE *fphzk fphzk=fopen("c:\\hzk16","rb"); 其意义是打开C驱动器磁盘的根目录下的文件hzk16,按二进制方式进行读操作。两个反斜线“\\ ”中的第一个表示转义字符, 第二个表示根目录 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作, 并作相应的处理。因此常用以下程序段打开文件(假设文件路径已写入到name字符数组中): 示例1 if((fp=fopen(name,"rb"))==NULL) { printf("\nerror on open %s file!",name); getch(); exit(1); } 示例2 #include<stdio.h> #include<string.h> #include<stdlib.h> int main() { FILE* fstream; char msg[100] = "Hello!I have read this file."; fstream=fopen("test.txt","at+"); if(fstream==NULL) { printf("open file test.txt failed!\n"); exit(1); } else { printf("open file test.txt succeed!\n"); } fclose(fstream); return 0; }
具体解释请参数:
[2] feof函数
feof函数是C语言标准库函数,其原型在stdio.h中,其功能是检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0
(即,文件结束:返回非0值;文件未结束:返回0值)。
[3]fgets函数
fgets()函数不适合取二进制的文件,容易发生错误。
读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,
函数调用的形式为: fgets(字符数组名,n,文件指针);
其中的n是一个正整数。表示从文件中读出的字符串不超过 n-1个字符。在读入的最后一个字符后加上串结束标志'/0'。
例如:fgets(str,n,fp);的意义是从fp所指的文件中读出n-1个字符送入字符数组str中。
[4]fgetc函数
fgetc()和getc()作用相同,不过在有些库中,getc()被定义为宏
fgetc()函数用于从文件流中读取一个字符,其原型为:
int fgetc(FILE * stream);
【参数】stream为文件指针。
【返回值】成功返回读取到的字符,读到文件结尾时返回EOF。EOF是文件结束标志,值为-1。-1即为 真
读操作的位置也是由文件内部位置指针来确定,对于已经存在的文件,文件被打开时,文件内部位置指针指向文件的第一个字节。这时,调用fgetc()函数读的是第一个字节的字符,读入一个字节以后,位置指针将自动向后移动一个字节,那么再调用一次fgetc()函数,则读取的是第2个字符。连续调用该函数就可以读取文件的每个字符,并且可以使用EOF来判断是否已经到了文件末尾。
#include <stdio.h>int main (){ FILE *fp; int c; fp = fopen("file.txt","r"); while(1) //非0即真,while循环读取 { c = fgetc(fp); if( feof(fp) ) //文件结束即为 真,则结束读取操作 { break ; } printf("%c", c); } fclose(fp); return(0);}
[5] fputs()函数
C 库函数 int fputs(const char *str, FILE *stream) 把字符串写入到指定的流 stream 中,但不包括空字符。
下面是 fputs() 函数的声明。
fputs(字符串,文件指针) 其中字符串可以是字符串常量,也可以是字符数组名,
fputs(“abcd“,fp);
--------------------------------------------
int fputs(const char *str, FILE *stream)
参数
str -- 这是一个数组,包含了要写入的以空字符终止的字符序列。如 char str[10] = "hello\n";
stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要被写入字符串的流。
返回值
该函数返回一个非负值,如果发生错误则返回 EOF。
#include <stdio.h> int main () { FILE *fp; fp = fopen("file.txt", "w+"); fputs("this is tes fputs", fp); fputs("add this string", fp); fclose(fp); return(0); } 上面代码会创建文件 file.txt,它的内容如下: this is tes fputs add this string
[6]getch():
所在头文件:conio.h
函数用途:从控制台读取一个字符,但不显示在屏幕上
getchar():
所在头文件:stdio.h
getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,
只要用户按一个键,getch就立刻返回, getch返回值是用户输入的ASCII码,出错返回-1.
输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示
有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.
[7] stdin,stdout和stderr,
这3个可以称为终端(Terminal)的标准输入(standard input),标准输出( standard out)和标准错误输出(standard error)。
它们都是在stdio.h中定义的。 当linux开始执行程序的时候,程序默认会打开这3个文件流,这样就可以对终端进行输入输出操作
#include <stdio.h> int main () { char str[20]; printf("请从键盘输入一个字符串 可以是任何字符串,回车确认结束"); fgets(str,5,stdin); //从输入流stdin中读取4个字符到字符数组str中 fputs(str,stdout) //将字符数组的内容输出到输出流stdout中 return(0); }
评论