栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

字符串和格式化输入/输出

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字符串和格式化输入/输出

第四章 字符串和格式化输入/输出 4.1 前导程序
//talkback.c - - 演示与用户交互
#include 
#include 	//提供strlen();函数原型
#define DENSITY 62.4	//人体密度(单位:磅)
int main(void)
{
    float weight,volume;
    int size.letters;
    char name[40];	//name 是一个可容纳40个字符的数组
    
    printf("Hi! What`s your first name?n");
    scanf("%s", name);
    printf("%s,What`s your weight in pounds?n",name);
    scanf("%f",&weight);
    size = sizeof name;
    letters = strlen(name);
    volume = weight / DENSITY;
    printf("Well,%s,your volume is %2.2f cubic feet.n",name,volume);
    printf("Also,your first name has %d letters,n",letters);
    printf("and we have %d bytes to store it.n",size);
    
    return 0;
}

输出:

Hi! What`s your first name?

Christine

Christine,What`s your weight in pounds?

154

Well,Christine,your volume is 2.47 cubic feet.

Also,your first name has 9 letters,

and we have 40 bytes to store it.

4.2字符串简介

字符串是一个或多个字符的序列

"Zing went the strings of my heart!"

双引号用来告诉编译器这是一个字符串

4.2.1 char类型数组和null字符
  1. 字符串都被储存在char类型的数组中。数组由连续的存储单元组成,每个单元储存一个字符

  2. 数组末尾的 这是空字符,C语言用它来标记字符串的结束。

  3. 空字符是 非打印字符,不是0。

  4. C语言中的字符串都是以空字符结束,所以数组的容量至少比待存储字符串中的字符数多1。

  5. **数组:**是同类型数据元素的有序序列。可以看做是一行连续的多存储单元。

  6. 字符串使用时,必须先创建一个数组,数组的末尾加上.

4.2.2 使用字符串
#include
#define PRAISE "You are an extraordinary."
int main(void)
{
    char name[40];
    
    printf("What`s your name?");
    scanf("%s",name);
    printf("Hello,%s. %sn",name,PRAISE);
    
    return 0;
}

scanf();只会读取字符串中的一个单词,而不是一整句。

fgets();用于读取一般字符串。

字符串和字符

字符串常量 “X” 和字符常量 ‘X’ 不同:

  1. ‘X’ 是基本类型(char),“X” 是派生类型(char 数组)

  2. “X” 实际上是两个字符组成:‘X’ 和空字符

4.2.3 strlen()函数

sizeof运算符,以字节为单位给出对象的长度。

strlen()函数给出字符串中的字符长度。

//如果编译器不识别%zd,尝试换成%u或%lu。
#include
#include	//提供strlen()函数的原型
#define PRAISE "You are an extraordinary."
int main(void)
{
    char name[40];
    
    printf("What`s your name?");
    scanf("%s",name);
    printf("Hello,%s. %sn",name,PRAISE);
    printf("Your name of %zd letter occupies %zd memory cells.n",strlen(name),sizof name);
    printf("The phrase of praise has %zd letters",strlen(PRAISE));
    printf("and occupies %zd memory cells.n",sizeof PRAISE);
    
    return 0;
}

输出:

What`s your name? Serendipity Chance

Hello Serendipity .You are an extraordinary.

Your name of 11 letter occupies 40 memory cells.

The phrase of praise has 31 letters and occupies 32 memory cells.

  1. strlen()函数不会计入数组单元储存的空字符。
  2. 圆括号的使用取决于运算对象是类型还是特定量:类型是加圆括号,特定量可不加。(建议全加。)
4.3 常量和C预处理器

1、使用常量符号比使用常量更好:

  1. 常量名比数字表达的信息更多
  2. 如果程序中多次使用的常量需要改变(如:税率),使用符号常量更方便

2、设置一个全局变量并给起赋值,可行,但是变量的值容易被改变。

3、C语言提供了----C预处理器(#define)

例如:#define txt 0.015

4、编译程序时所有的 txt 会被替换为0.015。这个过程称为编译时替换。

5、这样的定义方式称为:明示常量。

6、一般用大写表示符号常量

4.3.1 const限定符
  1. const 关键字,用于限定一个变量为只读。(注:限定是的变量!)
  2. 例如:const int MonTHS = 12; //MONTHS在程序中不可更改,值为12
4.3.2 明示变量

C头文件中limits.h和float.h分别提供了与整数类型和浮点数类型大小限制相关的详细信息。

4.4 printf() 和 scanf()

输出/输入函数,简称I/O函数。

4.4.1 printf()函数

请求printf()函数打印数据的指令要与待打印数据的类型相匹配。

转换说明:指定了如何把数据转换成可显示的形式。

4.4.2使用printf()

printf()函数的格式:

printf(格式字符串、待打印项1、待打印项2、待打印项3、、、);

每个待打印项要有对应的转换格式。

printf()函数使用的是值,无论是变量、常量还是表达式的值。

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

在%和转换字符之间插入修饰符可以修饰基本的转换说明

sizeof运算符以字节为单位返回类型或值的大小。

1.使用修饰符和标记的示例
#include
define PAGES 959
int main(void)
{
    printf("*%d*n",PAGES);
    printf("*%2d*n",PAGES);
    printf("*%10d*n",PAGES);
    printf("*%-10d*n",PAGES);
    
    return 0;
}


输出:
    *959*
    *959*
    *       959*
    *959       *
//floats.c -- 一些浮点型修饰符的组合
#include

int main(void)
{
    const double RENT = 3852.99;	//const变量
    
    printf("*%f*n",RENT);
    printf("*%e*n",RENT);
    printf("*%4.2f*n",RENT);
    printf("*%3.1f*n",RENT);
    printf("*%10.3f*n",RENT);
    printf("*%10.3E*n",RENT);
    printf("*%+4.2f*n",RENT);
    printf("*%010.2f*n",RENT);
    
    return 0;
}


输出:
    *3852.990000*
    *3.852990e+03*
    *3852.99*
    *3853.0*
    *  3852.990*
    * 3.853E+03*
    *+3852.99*
    *0003852.99*
4.4.4转换说明的意义
  1. 转换说明:把以二进制格式储存在计算机中的值转换成一系列字符(字符串)以便于显示。
  2. 转换说明是翻译说明。例如:%d的意思是“把给定的值翻译成十进制整数文本并打印出来”。
4.4.5使用scanf()
  1. scanf()中的格式字符串表明字符输入流的目标数据类型。
  2. printf()函数使用变量、常量和表达式。而scanf()函数使用指向变量的指针。
  3. 如果用scanf()读取基本变量类型的值,在变量名前加上一个&。用scanf()把字符串读入字符数组中,不用&。
  4. scanf()函数使用空白(换行符、制表符和空格)把输入分成多个字段。
  5. 根据%c,scanf()会读取每个字符,包括空白。
1、从scanf()角度看输入
  1. scanf()函数每次读取一个字符,跳过所有的空白字符,直到遇到第一个非空白字符开始读取。
  2. 如果使用字段宽度,scanf()会在字段结尾 或 第一个空白字符处停止读取(满足其中一个就停止)。
  3. 转换说明为%d。读到的第一个转换字符是A而不是数字,scanf()会一直无法越过A读取下一个字符。
  4. 使用%s转换说明,scanf()函数会读取除空白外所有字符。
2、格式字符串中的普通字符
  1. scanf()函数允许把普通字符放在格式字符串中。
3、scanf()的返回值

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/676184.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号