C语言教程 第14页 C 库函数 – atof() C 标准库 – <stdlib.h> 描述 C 库函数 double atof(const char *str) 把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。 声明 下面是 atof() 函数的声明。 double atof(const char *str) 参数 str — 要转换为浮点数的字符串。 返回值 函数返回转换后的双精度浮点数,如果没有执行有效的转换,则返回零(0.0)。 实例 下面的实例演示了 atof() 函数的用法。 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { float val; char str[20]; strcpy(str, "98993489"); val = atof(str); printf("字符串值 = %s, 浮点值 = %f\n", str, val); strcpy(str, "w3cschool.cn"); val = atof(str); printf("字符串值 = %s, 浮点值 = %f\n", str, val); return(0); } 让我们编译并运行上面的程序,这将产生以下结果: 字符串值 = 98993489, 浮点值 = 98993488.000000 字符串值 = w3cschool.cn, 浮点值 = 0.000000 C 标准库 – <stdlib.h>
2024-04-03
C 库函数 – fputs() C 标准库 – <stdio.h> 描述 C 库函数 int fputs(const char *str, FILE *stream) 把字符串写入到指定的流 stream 中,但不包括空字符。 声明 下面是 fputs() 函数的声明。 int fputs(const char *str, FILE *stream) 参数 str — 这是一个数组,包含了要写入的以空字符终止的字符序列。 stream — 这是指向 FILE 对象的指针,该 FILE 对象标识了要被写入字符串的流。 返回值 该函数返回一个非负值,如果发生错误则返回 EOF。 实例 下面的实例演示了 fputs() 函数的用法。 #include <stdio.h> int main () { FILE *fp; fp = fopen("file.txt", "w+"); fputs("这是 C 语言。", fp); fputs("这是一种系统程序设计语言。", fp); fclose(fp); return(0); } 让我们编译并运行上面的程序,这将创建文件 file.txt,它的内容如下: 这是 C 语言。这是一种系统程序设计语言。 现在让我们使用下面的程序查看上面文件的内容: #include <stdio.h> int main () { FILE *fp; int c; fp = fopen("file.txt","r"); while(1) { c = fgetc(fp); if( feof(fp) ) { break ; } printf("%c", c); } fclose(fp); return(0); } C 标准库 – <stdio.h>
2024-04-03
C 库函数 – atoi() C 标准库 – <stdlib.h> 描述 C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。 声明 下面是 atoi() 函数的声明。 int atoi(const char *str) 参数 str — 要转换为整数的字符串。 返回值 该函数返回转换后的长整数,如果没有执行有效的转换,则返回零。 实例 下面的实例演示了 atoi() 函数的用法。 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int val; char str[20]; strcpy(str, "98993489"); val = atoi(str); printf("字符串值 = %s, 整型值 = %d\n", str, val); strcpy(str, "w3cschool.cn"); val = atoi(str); printf("字符串值 = %s, 整型值 = %d\n", str, val); return(0); } 让我们编译并运行上面的程序,这将产生以下结果: 字符串值 = 98993489, 整型值 = 98993489 字符串值 = w3cschool.cn, 整型值 = 0 C 标准库 – <stdlib.h>
2024-04-03
C 库函数 – fgetc() C 标准库 – <stdio.h> 描述 C 库函数 int fgetc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。 声明 下面是 fgetc() 函数的声明。 int fgetc(FILE *stream) 参数 stream — 这是指向 FILE 对象的指针,该 FILE 对象标识了要在上面执行操作的流。 返回值 该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。 实例 下面的实例演示了 fgetc() 函数的用法。 #include <stdio.h> int main () { FILE *fp; int c; int n = 0; fp = fopen("file.txt","r"); if(fp == NULL) { perror("打开文件时发生错误"); return(-1); } do { c = fgetc(fp); if( feof(fp) ) { break ; } printf("%c", c); }while(1); fclose(fp); return(0); } 假设我们有一个文本文件 file.txt,它的内容如下。文件将作为实例中的输入: We are in 2014 让我们编译并运行上面的程序,这将产生以下结果: We are in 2014 C 标准库 – <stdio.h>
2024-04-03
C 库函数 – ungetc() C 标准库 – <stdio.h> 描述 C 库函数 int ungetc(int char, FILE *stream) 把字符 char(一个无符号字符)推入到指定的流 stream 中,以便它是下一个被读取到的字符。 声明 下面是 ungetc() 函数的声明。 int ungetc(int char, FILE *stream) 参数 char — 这是要被推入的字符。该字符以其对应的 int 值进行传递。 stream — 这是指向 FILE 对象的指针,该 FILE 对象标识了输入流。 返回值 如果成功,则返回被推入的字符,否则返回 EOF,且流 stream 保持不变。 实例 下面的实例演示了 ungetc() 函数的用法。 #include <stdio.h> int main () { FILE *fp; int c; char buffer [256]; fp = fopen("file.txt", "r"); if( fp == NULL ) { perror("打开文件时发生错误"); return(-1); } while(!feof(fp)) { c = getc (fp); /* 把 ! 替换为 + */ if( c == '!' ) { ungetc ('+', fp); } else { ungetc(c, fp); } fgets(buffer, 255, fp); fputs(buffer, stdout); } return(0); } 假设我们有一个文本文件 file.txt,它的内容如下。文件将作为实例中的输入: this is w3cschool !c standard library...
2024-04-03
C 库函数 – fgets() C 标准库 – <stdio.h> 描述 C 库函数 char *fgets(char *str, int n, FILE *stream) 从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。 声明 下面是 fgets() 函数的声明。 char *fgets(char *str, int n, FILE *stream) 参数 str — 这是指向一个字符数组的指针,该数组存储了要读取的字符串。 n — 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。 stream — 这是指向 FILE 对象的指针,该 FILE 对象标识了要从中读取字符的流。 返回值 如果成功,该函数返回相同的 str 参数。如果到达文件末尾或者没有读取到任何字符,str 的内容保持不变,并返回一个空指针。 如果发生错误,返回一个空指针。 实例 下面的实例演示了 fgets() 函数的用法。 #include <stdio.h> int main() { FILE *fp; char str[60]; /* 打开用于读取的文件 */ fp = fopen("file.txt" , "r"); if(fp == NULL) { perror("打开文件时发生错误"); return(-1); } if( fgets (str, 60, fp)!=NULL ) { /* 向标准输出 stdout 写入内容 */ puts(str); } fclose(fp); return(0); } 假设我们有一个文本文件 file.txt,它的内容如下。文件将作为实例中的输入: We are in 2014 让我们编译并运行上面的程序,这将产生以下结果: We are in 2014 C 标准库 – <stdio.h>
2024-04-03
C 库函数 – perror() C 标准库 – <stdio.h> 描述 C 库函数 void perror(const char *str) 把一个描述性错误消息输出到标准错误 stderr。首先输出字符串 str,后跟一个冒号,然后是一个空格。 声明 下面是 perror() 函数的声明。 void perror(const char *str) 参数 str — 这是 C 字符串,包含了一个自定义消息,将显示在原本的错误消息之前。 返回值 该函数不返回任何值。 实例 下面的实例演示了 perror() 函数的用法。 #include <stdio.h> int main () { FILE *fp; /* 首先重命名文件 */ rename("file.txt", "newfile.txt"); /* 现在让我们尝试打开相同的文件 */ fp = fopen("file.txt", "r"); if( fp == NULL ) { perror("Error: "); return(-1); } fclose(fp); return(0); } 让我们编译并运行上面的程序,这将产生以下结果,因为我们尝试打开一个不存在的文件: Error: : No such file or directory C 标准库 – <stdio.h>
2024-04-03
C 库函数 – scanf() C 标准库 – <stdio.h> 描述 C 库函数 int scanf(const char *format, …) 从标准输入 stdin 读取格式化输入。 声明 下面是 scanf() 函数的声明。 int scanf(const char *format, ...) 参数 format — 这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符 和 format 说明符。format 说明符形式为 [=%[*][width][modifiers]type=],具体讲解如下: 参数 描述 * 这是一个可选的星号,表示数据是从流 stream 中读取的,但是可以被忽视,即它不存储在对应的参数中。 width 这指定了在当前读取操作中读取的最大字符数。 modifiers 为对应的附加参数所指向的数据指定一个不同于整型(针对 d、i 和 n)、无符号整型(针对 o、u 和 x)或浮点型(针对 e、f 和 g)的大小: h :短整型(针对 d、i 和 n),或无符号短整型(针对 o、u 和 x) l :长整型(针对 d、i 和 n),或无符号长整型(针对 o、u 和 x),或双精度型(针对 e、f 和 g) L :长双精度型(针对 e、f 和 g) type 一个字符,指定了要被读取的数据类型以及数据读取方式。具体参见下一个表格。 scanf 类型说明符: 类型 合格的输入 参数的类型 c 单个字符:读取下一个字符。如果指定了一个不为 1 的宽度 width,函数会读取 width 个字符,并通过参数传递,把它们存储在数组中连续位置。在末尾不会追加空字符。 char * d 十进制整数:数字前面的 + 或 – 号是可选的。 int * e,E,f,g,G 浮点数:包含了一个小数点、一个可选的前置符号 + 或 -、一个可选的后置字符 e 或 E,以及一个十进制数字。两个有效的实例 -732.103 和 7.12e4 float * o...
2024-04-03
C 库函数 – putchar() C 标准库 – <stdio.h> 描述 C 库函数 int putchar(int char) 把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。 声明 下面是 putchar() 函数的声明。 int putchar(int char) 参数 char — 这是要被写入的字符。该字符以其对应的 int 值进行传递。 返回值 该函数以无符号 char 强制转换为 int 的形式返回写入的字符,如果发生错误则返回 EOF。 实例 下面的实例演示了 putchar() 函数的用法。 #include <stdio.h> int main () { char ch; for(ch = 'A' ; ch <= 'Z' ; ch++) { putchar(ch); } return(0); } 让我们编译并运行上面的程序,这将产生以下结果: ABCDEFGHIJKLMNOPQRSTUVWXYZ C 标准库 – <stdio.h>
2024-04-03
C 库函数 – sscanf() C 标准库 – <stdio.h> 描述 C 库函数 int sscanf(const char *str, const char *format, …) 从字符串读取格式化输入。 声明 下面是 sscanf() 函数的声明。 int sscanf(const char *str, const char *format, ...) 参数 str — 这是 C 字符串,是函数检索数据的源。 format — 这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符 和 format 说明符。format 说明符形式为 [=%[*][width][modifiers]type=],具体讲解如下: 参数 描述 * 这是一个可选的星号,表示数据是从流 stream 中读取的,但是可以被忽视,即它不存储在对应的参数中。 width 这指定了在当前读取操作中读取的最大字符数。 modifiers 为对应的附加参数所指向的数据指定一个不同于整型(针对 d、i 和 n)、无符号整型(针对 o、u 和 x)或浮点型(针对 e、f 和 g)的大小: h :短整型(针对 d、i 和 n),或无符号短整型(针对 o、u 和 x) l :长整型(针对 d、i 和 n),或无符号长整型(针对 o、u 和 x),或双精度型(针对 e、f 和 g) L :长双精度型(针对 e、f 和 g) type 一个字符,指定了要被读取的数据类型以及数据读取方式。具体参见下一个表格。 sscanf 类型说明符: 类型 合格的输入 参数的类型 c 单个字符:读取下一个字符。如果指定了一个不为 1 的宽度 width,函数会读取 width 个字符,并通过参数传递,把它们存储在数组中连续位置。在末尾不会追加空字符。 char * d 十进制整数:数字前面的 + 或 – 号是可选的。 int * e,E,f,g,G 浮点数:包含了一个小数点、一个可选的前置符号 + 或 -、一个可选的后置字符...
2024-04-03