格式化输出
sprintf()
、printf()
和 fprintf()
功能上有本质区别,分别用于向字符串缓冲区、终端和文件输出格式化的数据!
简介
-
printf()
:printf()
是 C 标准库中的函数,用于向标准输出流(通常是终端)输出格式化数据。- 格式:
int printf(const char *format, ...)
- 通过
printf()
函数,可以将格式化的数据输出到终端上,方便用户查看。 - 示例:
printf("Hello, %s!\n", "world");
-
fprintf()
:-
fprintf()
也是 C 标准库中的函数,用于向指定的流输出格式化数据。 -
格式:
int fprintf(FILE *stream, const char *format, ...)
-
通过
fprintf()
函数,可以将格式化的数据输出到指定的文件流中,实现数据的持久化存储。 -
示例:
fprintf(file, "The number is: %d\n", num);
fprintf() 函数的输出重定向到这些流中: 标准输出流(stdout): 输出到屏幕。 标准错误流(stderr): 输出错误信息到屏幕。 文件流: 将输出写入到指定的文件中。 网络流: 将输出发送到网络连接。
-
-
sprintf()
:★★★格式化写入字符串★★★sprintf()
是 C 标准库中的函数,用于将格式化数据写入字符串缓冲区中。- 格式:
int sprintf(char *str, const char *format, ...)
- 通过
sprintf()
函数,可以将格式化的数据写入字符串缓冲区中,而不是输出到文件或终端。 - 示例:
sprintf(str, "The number is: %d", num);
应用场景
printf()
用于向终端输出,fprintf()
用于向流输出,而 sprintf()
用于将格式化数据写入字符串中;
典例
#include <stdio.h>
#define USAGE() fprintf(stderr, “fopen err”)
int main() {
// 使用 printf() 向终端输出格式化数据
printf("Hello, %s!\n", "world");
// 使用 fprintf() 向文件输出格式化数据
FILE *file = fopen("output.txt", "w");
if (file == NULL) {
USAGE();
return 1;
}
fprintf(file, "This is a message written to a file.\n");
fclose(file);
// 使用 sprintf() 将格式化数据写入字符串缓冲区
char buffer[100]; // 用于存储格式化后的字符串
int num = 42;
char str[] = "example";
sprintf(buffer, "The number is: %d, the string is: %s\n", num, str);
// 输出格式化后的字符串
printf("Formatted string: %s\n", buffer);
return 0;
}
字符串处理函数
①计算字符串长度
*size_t strlen(const char str);
计算字符串长度,不包括 null 终止符。
char temp;strlen(temp);
②比较字符串的内容:
strcmp 函数:
函数原型: int strcmp(const char *str1, const char *str2);
功能: 比较字符串 str1 和 str2 的内容。
返回值:
如果 str1 和 str2 相等,返回 0。
如果 str1 小于 str2,返回一个负整数。
如果 str1 大于 str2,返回一个正整数。
strncmp 函数:
函数原型: int strncmp(const char *str1, const char *str2, size_t n);
功能: 比较字符串 str1 和 str2 的前 n 个字符的内容。
返回值:
如果 str1 和 str2 前 n 个字符相等,返回 0。
如果 str1 小于 str2,返回一个负整数。
如果 str1 大于 str2,返回一个正整数。
strcasecmp 函数:
函数原型: int strcasecmp(const char *str1, const char *str2);
功能: 不区分大小写地比较字符串 str1 和 str2 的内容。
返回值:
如果 str1 和 str2 相等,返回 0。
如果 str1 小于 str2,返回一个负整数。
如果 str1 大于 str2,返回一个正整数。
strncasecmp 函数:
函数原型:int strncasecmp(const char *str1, const char *str2, size_t n);
功能:不区分大小写地比较字符串 str1 和 str2 的前 n 个字符的内容。
返回值:
如果 str1 和 str2 前 n 个字符相等,返回 0。
如果 str1 小于 str2,返回一个负整数。
如果 str1 大于 str2,返回一个正整数。
③复制和修改字符串内容
strcpy 函数:
函数原型:
char *strcpy(char *dest, const char *src);
功能:
将源字符串 src 复制到目标字符串 dest 中,包括 null 终止符。
注意事项:
确保目标字符串 dest 的数组大小足够大,以容纳源字符串 src 的内容。
strncpy 函数:
函数原型:
char *strncpy(char *dest, const char *src, size_t n);
功能:
将源字符串 src 的前 n 个字符(不包括 null 终止符)复制到目标字符串 dest 中。
注意事项:
如果 n 小于源字符串 src 的长度,目标字符串 dest 不会自动添加 null 终止符。
strcat 函数:
函数原型:
char *strcat(char *dest, const char *src);
功能:
将源字符串 src 追加到目标字符串 dest 的末尾,并添加 null 终止符。
注意事项:
确保目标字符串 dest 的数组大小足够大,以容纳源字符串 src 的内容和目标字符串 dest 的内容。
strncat 函数:
函数原型:
char *strncat(char *dest, const char *src, size_t n);
功能:
将源字符串src的前n个字符(不包括 null 终止符)追加到目标字符串 dest 的末尾,并添加 null 终止符。
注意事项:
如果 n 小于源字符串 src 的长度,目标字符串 dest 不会自动添加 null 终止符。
sprintf 函数:
函数原型:
int sprintf(char *str, const char *format, ...);
功能:
将格式化的数据写入字符串 str 中。
注意事项:
确保目标字符串 str 的数组大小足够大,以容纳格式化后的数据。
标签:格式化,str2,str1,C语言,char,字符串,const,处理函数
From: https://blog.csdn.net/Thmos_vader/article/details/141001934