第四章,字符串和格式化输入/输出

目录

4.2   字符串简介

4.2.1  char类型字符数组和null字符

4.2.3  string()函数

4.3  常量和c预处理器

4.3.1  const限定符

4.3.2  明示常量

4.4  printf()和sacnf()

4.4.1  printf()转化说明及其打印输出的结果

 4.4.2  使用printf()

 4.4.3  printf()的转换说明修饰符

4.4.5  使用scanf()

4.4.6  printf()和sacnf()的*修饰符

4.7  复习题

4.8  编程练习

4.2   字符串简介

4.2.1  char类型字符数组和null字符

字符串都被储存在char类型的数组中,数组由连续的存储单元构成。c语言用 来标记字符串的结束。

例:char[40],只能存储39个字符,末位要加即空字符。

4.2.3  string()函数

string()不计算.

4.3  常量和c预处理器

#define NUM 1.5:编译程序时,程序中所有的NUM被替换成1.5,这被称为编译时替换,这样定义的常量也被称为明示常量。

注意:末尾不加分号,,一般用大写表示符号常量。

4.3.1  const限定符

const int NUM=12;//NUM在程序中不能修改,值为12。

4.3.2  明示常量

limts.h表示的明示常量

 float.h中的明示常量

将FEL分别替换为DBL和LDBL,即可分别显示double和long double类型对应的明示常量。

4.4  printf()和sacnf()

4.4.1  printf()转化说明及其打印输出的结果

 4.4.2  使用printf()

 4.4.3  printf()的转换说明修饰符

 

转换类型一定要匹配,不然结构不正确。

printf()返回值:返回打印字符的个数,输出错误,则返回一个负值。

打印较长字符串:用反斜杠()加enter组合来断行,不要缩进。或引入字符穿连接。例"love" "love"和"lovelove"等价,要在双引号中”“即字符串中加空格,才会隔开。

4.4.5  使用scanf()

读取基本变量类型,需要加上&

如把字符串读取到字符数组,不要使用&

 

 例:sacf(”%d,%d“,&n,&m)表示要输入一个数字,一个逗号,再输入一个数字。

格式字符串中空白意味跳过下一个输入项前面所有的空白。

例sacf(”%d    ,%d“,&n,&m)

除了%c,其他转化说明都会自动跳过输入值前面所有的空白。

对与格式字符串

scanf(”%c“,&ch):从输入的一个字符串开始读取,(不懂)

scanf(”   %c“,&ch)则从第一个非空白字符开始读取。(不懂)

scanf()返回值:返回成功读取的项数。

4.4.6  printf()和sacnf()的*修饰符

printf()中例%*.*f表示,前一个*为字段宽度,后一个为小数位后几位。

scanf()中%*c表示跳过该输入

%[* ]s表示可以输入带空格的字符串。

4.7  复习题

1.  不能正常运行,因为在空格初中断,姓被读取例。名还保留在缓冲区内,下次程序从上次中断的地方开始读取,即用%f读取名,会发生错误。

2.  a:字符宽度和精度。b:关于转义字符,例  '41'其中41为八进制的41,'x41‘表示16进制的41。c:加上。d:

7.  打印字宽为8的字符串前8位字符。%8.8s

8.  空白包括空格,制表符和换行符

4.8  编程练习

1  输入姓名,转换为名,姓

#include <stdio.h>
#define backspace ""//为了退格
int main(void)
{
    char surname[40];
    char name[40];
    printf("%Please enter your name____________________%s",backspace);
    scanf("%s %s",surname,name);
    printf("%s,%s",name,surname);
    return 0;
}

2.

 1 #include <stdio.h>
 2 #include <string.h>
 3 #define backspace ""
 4 int main(void)
 5 {
 6 
 7     char name[40];
 8     printf("%Please enter your name____________________%s",backspace);
 9     scanf("%[^
]s",name);
10     int len=strlen(name)+3;
11     printf(""%s"
",name);
12     printf(""%20s"
",name);
13     printf(""%-20s"
",name);
14     printf(""%*s"
",len,name);
15     return 0;
16 }

3.

 1 #include <stdio.h>
 2 #include <string.h>
 3 #define backspace ""
 4 int main(void)
 5 {
 6     float num=0.0;
 7     printf("%Please enter a float____________________%s",backspace);
 8     scanf("%f",&num);
 9     printf("输出%.1f或%.1e
",num,num);
10     printf("输出%.3f或%.3e
",num,num);
11     return 0;
12 }

6.

#include <stdio.h>
#include <string.h>
#define backspace ""
int main(void)
{
    char surname[20];
    char name[20];
    printf("%Please enter your surname____________________%s",backspace);
    scanf("%s",surname);
    printf("%Please enter your name____________________%s",backspace);
    scanf("%s",name);
    printf("%s  %s
",surname,name);
    printf("%*d  %*d
",strlen(surname),strlen(surname),strlen(name),strlen(name));
    printf("%s  %s
",surname,name);
    printf("%-*d  %-*d
",strlen(surname),strlen(surname),strlen(name),strlen(name));
    return 0;
}
原文地址:https://www.cnblogs.com/suwencjp/p/12292057.html