黑马程序员——字符串与格式化输入/输出

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

 一、字符串简介

字符串:就是一个或多个字符的序列。

1.char数组类型和空字符

C没有为字符串定义专门的变量类型,而是把它存储在char数组中。字符串中的字符存放在相邻的存储单元中,每个字符占用一个单元;而数组由相邻存储单元组成,所以把字符串存储到数组中很自然的。数组的最后一个位置显示字符\0。这个字符就是空字符,C用它来标记字符串结束。空字符不是数字0;它是非打印字符。C的字符串存储时通常以这个空字符结束。该字符的存在意味着数组的单元数必须至少比要存储的字符数多1.

2.使用字符串

先看一段代码:
#include<stdio.h>
int main()
{
char name[40];
    
printf("what is your name?\n");
scanf("%s",name);
printf("Hello,%s",name);
return 0;
}
%s告诉printf要打印一个字符串。需要主意(这个很重要),scanf开始读取输入以后,会在遇到的第一个空白字符空格(blank)、制表符(tab)或者换行符(newline)处停止读取。一般情况下,使用%s的scanf只会把一个单词而不是把整个语句作为字符串读入。C使用其他读取输入函数gets来处理一般的字符串。

3.字符串与字符

字符串常量“x”与字符常量‘x’不同。其中一个区别是‘x’属于基本类型(char),而“x”则属于派生类型(char数组)。第二个区别是“x”实际上由两个字符(‘x’和空字符‘\0’)组成

二、strlen函数与sizeof函数

1.区别

strlen函数以字符为单位给出字符串的长度。sizeof函数以字节为单位给出数据的大小。

2.例子

    看下面一段代码:
#include<stdio.h>
#include<string.h>
int main()
{
char name[40];
printf("What is your name:);
scanf("%s",name);
printf("Hello,%s",name);<pre name="code" class="objc">printf("字符串长度为:%d,数据长度为:%d",strlen(name),sizeof(name));

 
 
 
 
 
 
 
 
 
  
 输入:abc时候,输出结果为:字符串长度为:3,数据长度为:40。 

三、研究和利用printf和scanf

       1.关于printf函数

1>printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。
2>格式: printf("<格式化字符串>", <参量表>)。
3>格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。
4>要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。   
     
  例如:
#include<stdio.h>
int main()
{
printf("黑马程序员");
return 0;
}
          转换说明符及作为结果的打印输出
转换说明输出
%c一个字符
%d有符号十进制整数
%f浮点数、十进制记法
%i有符号十进制整数(与%d)相同
%o无符号八进制整数
%p指针
%s字符串
%u无符号十进制整数
%%打印一个百分号

                      常用的转义序列
       表示        含义
\f换页
   \n
换行
  \r
回车
 \t
水平制表符


2.关于scanf函数

与printf函数一样,都被定义在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。   
      其调用形式为: scanf("<格式说明字符串>",<变量地址>);变量地址要求有效,并且与格式说明的次序一致。
      返回值:比如
scanf("%d %d",&a,&b);</span>
      如果a和b成功读入,那么scanf返回值就是2, 如果只有a被成功读入,返回值为1,如果a和b都未被成功读入,返回值为0,如果遇到错误或遇到end of file,返回值为EOF。且返回值为int型。
      例如:使用scanf函数输入数据
#include<stdio.h>
     int main(void)
     {
     int a,b,c;
     printf("输入a,b,c\n");
     scanf("%d%d%d",&a,&b,&c);
     printf("a=%d,b=%d,c=%d\n",a,b,c);
     return 0;
}
  &a,&b,&c中的&是地址运算符,&a指a在内存中的地址。scanf的作用是:按照a,b,c的内存地址将输入的数据存到a,b,c中去。变量a,b,c的地址是在编译连续阶段分配的(存储顺序由编译器决定)。
这里注意:如果scanf中%d是连着写的如“%d%d%d”,在输入数据时,数据之间不可以加逗号,只能是空格或tab键或者回车键——“2 3 4” 或 “2(按tab)3(按tab)4(按tab)”。若是“%d,%d,%d”,则在输入数据时需要加“,”,如“2,3,4”.
   scanf的转换修饰符
转换说明符意义
%c把输入解释成一个字符
%d把输入解释成一个有符号十进制整数
%i把输入解释成一个有符号十进制整数
%o把输入解释成一个有符号八进制整数
%p把输入解释成一个指针
%s把输入解释成一个字符串,以第一个非空白字
符开始直到下一个空白字符的全部字符
%u把输入解释成一个无符号十进制整数
%x把输入解释成一个有符号十六进制整数

四、总结与心得

1. 字符串是作为一个单位处理的一系列字符,在C中,以空字符结束的一系列字符代表一个字符串。
2.strlen函数(在string.h头文件中定义)可以用于获得一个字符串的长度(不包括标示终止的空字符)。scanf函数在使用%s说明符时,可以用于读取包含一个单词的字符串。
3.printf和scanf函数对输入和输出提供多种支持。二者都使用一个包含内嵌转换说明符的控制字符串来指示将要读取或打印的数据项的类型和数目。
4.理解字符串就要从数组出发。输出与输入函数以后会经常用到,最容易错的就是转换修饰符,多练习才会有效的记忆。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值