vlambda博客
学习文章列表

C语言字符串格式化输入输出

「今天是学习C语言第 31 天」


当你选择了一种语言,意味着你还选择了一组技术、一个社区。——Joshua Bloch

# 字符串格式化输入输出

C语言标准库<stdio.h>中提供一类函数对字符串进行输入输出格式化处理。

字符串输入输出,处理的对象是字符串,从字符串中输入或输出到字符串。

标准输入输出,处理的对象是键盘或显示器,从键盘输入或输出到显示器。


# 字符串格式化处理函数

通用类型的字符串标准输入输出函数

int scanf("%s", &str);

int printf("%s",str);


按行读取和输入字符串函数:

char *gets(char *s);

从标准stdin中(键盘)读取输入的字符串保存到指定的字符数组s中,字符串末尾自动加入空字符。

读取成功返回指向数组的指针,出错或无输入返回空指针。


int puts(const char *s);

将字符串s输出到标准输出stdout(屏幕)中,并遇到空字符\0时自动输出换行符\n。

出错返回EOF,成功返回非负值或0。

例如:

#include <stdio.h>int main(){ char str[100]; int count = 0; char *s = gets(str); count = puts(str); printf("%d\n", count); count = puts(s); printf("%d\n",count);  return 0;}
输入:abcde efg输出:abcde efg 0 abcde efg 0


字符串格式输出函数

将各种类型的参数按照格式输出到指定的字符数组中保存。

int sprintf(char *s, const char *format,...);

参数s是指向字符数组的指针,format参数是格式化控制字符串。

返回值是输出的字符数量,不包括s数组中自动加入的空字符。

作用:各种类型的值转换成一定格式的字符串。


例如:将各种类型的变量值组合转换成特定格式的字符串。

#include <stdio.h>int main(){ char str[100];  sprintf(str,"%c %d %.2f %.2lf %p", \   'A',100,100.01f,100.01,str); printf("%s\n",str); return 0;}
输出:A 100 100.01 100.01 0062FE3C


另一种非C89标准规定的输出函数,主流的编译器均提供支持。

int snprintf(char *s, size_t size, const char *format, ...); 

将参数按照格式控制转换成字符串,其中size规定字符串最大数目,超过size,就会截断输出。

例如:输出的字符串长度最大为10,不包括空字符在内,超出截断。

#include <stdio.h>int main(){ char str[11]; snprintf(str,10,"%c %d %.2f %.2lf %p",'A',100,100.01f,100.01,str); printf("%s\n",str); return 0;}
输出:A 100 100.


字符串格式输入函数

从字符串中按照格式提取对应的值赋值给参数。

int sscanf(const char *s, const char *format, ...);

参数s是指向字符串的指针,format参数是格式化控制字符串。

返回值是输入赋值的参数项数,输入转换失败的,则返回EOF。

作用:将字符串中各个子串提取转换赋值各种类型的参数变量。

例如:将字符串转换成对应变量赋值。

#include <stdio.h>int main(){ char str[] = "A 100 100.01 100.01 0062FE3C"; char c; int i; float f; double d; void *p; sscanf(str,"%c %d %f %lf %p",&c,&i,&f,&d,&p); printf("%c %d %.2f %.2lf %p\n",c,i,f,d,p); return 0;}
输出:A 100 100.01 100.01 0062FE3C


---------- End ----------


往期精彩推荐:





「喜欢C请赏个 赞    点击右下角 在看」