C 标准库 - <stdio.h> 详解1:https://developer.aliyun.com/article/1552424
20. char *tmpnam(char *str)
生成并返回一个有效的临时文件名,该文件名之前是不存在的。
#include <stdio.h> int main() { char buffer[L_tmpnam]; tmpnam(buffer); printf("Temporary file name: %s\n", buffer); return 0; }
21. int fprintf(FILE *stream, const char *format, ...)
发送格式化输出到流 stream
中。
#include <stdio.h> int main() { FILE *fp; int num = 10; fp = fopen("test.txt", "w"); fprintf(fp, "The number is: %d\n", num); fclose(fp); return 0; }
22. int printf(const char *format, ...)
发送格式化输出到标准输出 stdout
。
#include <stdio.h> int main() { int num = 10; printf("The number is: %d\n", num); return 0; }
23. int sprintf(char *str, const char *format, ...)
发送格式化输出到字符串。
#include <stdio.h> int main() { char buffer[20]; int num = 10; sprintf(buffer, "The number is: %d\n", num); printf("%s", buffer); return 0; }
24. int vfprintf(FILE *stream, const char *format, va_list arg)
使用参数列表发送格式化输出到流 stream
中。
#include <stdio.h> #include <stdarg.h> int my_printf(FILE *stream, const char *format, ...) { va_list arg; int done; va_start(arg, format); done = vfprintf(stream, format, arg); va_end(arg); return done; } int main() { FILE *fp; int num = 10; fp = fopen("test.txt", "w"); my_printf(fp, "The number is: %d\n", num); fclose(fp); return 0; }
25. int vprintf(const char *format, va_list arg)
使用参数列表发送格式化输出到标准输出 stdout
中。
#include <stdio.h> #include <stdarg.h> int my_printf(const char *format, ...) { va_list arg; int done; va_start(arg, format); done = vprintf(format, arg); va_end(arg); return done; } int main() { int num = 10; my_printf("The number is: %d\n", num); return 0; }
26. int vsprintf(char *str, const char *format, va_list arg)
使用参数列表发送格式化输出到字符串。
#include <stdio.h> #include <stdarg.h> int my_sprintf(char *str, const char *format, ...) { va_list arg; int done; va_start(arg, format); done = vsprintf(str, format, arg); va_end(arg); return done; } int main() { char buffer[20]; int num = 10; my_sprintf(buffer, "The number is: %d\n", num); printf("%s", buffer); return 0; }
27. int fscanf(FILE *stream, const char *format, ...)
从流 stream
读取格式化输入。
#include <stdio.h> int main() { FILE *fp; int num; fp = fopen("test.txt", "r"); fscanf(fp, "%d", &num); printf("The number read from file is: %d\n", num); fclose(fp); return 0; }
28. int scanf(const char *format, ...)
从标准输入 stdin
读取格式化输入。
#include <stdio.h> int main() { int num; printf("Enter a number: "); scanf("%d", &num); printf("You entered: %d\n", num); return 0; }
29. int sscanf(const char *str, const char *format, ...)
从字符串读取格式化输入。
#include <stdio.h> int main() { char str[] = "The number is: 10"; int num; sscanf(str, "The number is: %d", &num); printf("Extracted number from string: %d\n", num); return 0; }
30. int fgetc(FILE *stream)
从指定的流 stream
获取下一个字符(一个无符号字符),并把位置标识符往前移动。
#include <stdio.h> int main() { FILE *fp; int c; fp = fopen("test.txt", "r"); while ((c = fgetc(fp)) != EOF) { putchar(c); } fclose(fp); return 0; }
31. char *fgets(char *str, int n, FILE *stream)
从指定的流 stream
读取一行,并把它存储在 str
所指向的字符串内。当读取 (n-1)
个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
#include <stdio.h> int main() { FILE *fp; char buffer[255]; fp = fopen("test.txt", "r"); while (fgets(buffer, 255, fp) != NULL) { printf("%s", buffer); } fclose(fp); return 0; }
32. int fputc(int char, FILE *stream)
把参数 char
指定的字符(一个无符号字符)写入到指定的流 stream
中,并把位置标识符往前移动。
#include <stdio.h> int main() { FILE *fp; int c; fp = fopen("test.txt", "w"); for (c = 'A'; c <= 'Z'; ++c) { fputc(c, fp); } fclose(fp); return 0; }
33. int fputs(const char *str, FILE *stream)
把字符串写入到指定的流 stream
中,但不包括空字符。
#include <stdio.h> int main() { FILE *fp; fp = fopen("test.txt", "w"); fputs("This is just a test.\n", fp); fclose(fp); return 0; }
34. int getc(FILE *stream)
从指定的流 stream
获取下一个字符(一个无符号字符),并把位置标识符往前移动。
#include <stdio.h> int main() { FILE *fp; int c; fp = fopen("test.txt", "r"); while ((c = getc(fp)) != EOF) { putchar(c); } fclose(fp); return 0; }
35. int getchar(void)
从标准输入 stdin
获取一个字符(一个无符号字符)。
#include <stdio.h> int main() { int c; printf("Enter a character: "); c = getchar(); printf("You entered: "); putchar(c); return 0; }
36. char *gets(char *str)
从标准输入 stdin
读取一行,并把它存储在 str
所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况
而定。
#include <stdio.h> int main() { char str[255]; printf("Enter a string: "); gets(str); printf("You entered: %s\n", str); return 0; }
37. int putc(int char, FILE *stream)
把参数 char
指定的字符(一个无符号字符)写入到指定的流 stream
中,并把位置标识符往前移动。
#include <stdio.h> int main() { FILE *fp; int c; fp = fopen("test.txt", "w"); putc('A', fp); fclose(fp); return 0; }
38. int putchar(int char)
把参数 char
指定的字符(一个无符号字符)写入到标准输出 stdout
中。
#include <stdio.h> int main() { putchar('A'); return 0; }
39. int puts(const char *str)
把一个字符串写入到标准输出 stdout
,直到空字符,但不包括空字符。换行符会被追加到输出中。
#include <stdio.h> int main() { puts("This is just a test."); return 0; }
40. int ungetc(int char, FILE *stream)
把字符 char
(一个无符号字符)推入到指定的流 stream
中,以便它是下一个被读取到的字符。
#include <stdio.h> int main() { FILE *fp; int c; fp = fopen("test.txt", "r"); c = fgetc(fp); ungetc(c, fp); // Push the character back to the stream printf("Character pushed back: %c\n", fgetc(fp)); // Now read it again fclose(fp); return 0; }
41. void perror(const char *str)
把一个描述性错误消息输出到标准错误 stderr
。首先输出字符串 str
,后跟一个冒号,然后是一个空格。
#include <stdio.h> int main() { FILE *fp; fp = fopen("nonexistentfile.txt", "r"); if (fp == NULL) { perror("Error opening file"); return -1; } fclose(fp); return 0; }
42. int snprintf(char *str, size_t size, const char *format, ...)
格式字符串到 str
中。
#include <stdio.h> int main() { char buffer[20]; int num = 10; snprintf(buffer, 20, "The number is: %d\n", num); printf("%s", buffer); return 0; }
以上是 stdio.h
中定义的所有函数的详细介绍和示例。该头文件是 C 语言中输入输出操作的核心,熟练掌握其中的函数将对编程工作大有裨益。