C语言基础:字符串和格式化输入/输出
来源:互联网 发布:pm4十字绣软件 编辑:程序博客网 时间:2024/05/21 07:04
1.strlen和sizeof应用于字符串得到的结果一样么?
虽然1字节存储一个字符,但是二者应用于字符串所得结果并不一样。
举个栗子:
#include<stdio.h>
#include<string.h>
#define PRAISE "You are an extraodinary being."
int main(void)
{
char name[40];
printf("What's your name? ");
scanf("%s",name);
printf("Hello, %s. %s",name, PRAISE);
printf("Your name of %d letters occupies %d memory cells.\n",strlen(name),sizeof name);
printf("The phrase of praise has %d letters",strlen(PRAISE));
printf("and occupies %d memory cells.\n",sizeof PRAISE);
return 0;
}
输入以上程序,得出这样的结果
sizeof运算符报告,name数组有40个存储单元。但是,只有前8个单元用来存储porridge,所以strlen()得出的结果是11。name数组的第9个单元存储空字符,strlen()并未将其计入。
2.scanf()怎样读取?
假设scanf()根据一个%d转换说明读取一个整数。scanf()函数每次读取一个字符,跳过所有的空白字符,直至遇到1个非空白字符才开始读取。因为要读取整数,所以scanf()希望发现一个数字字符或者一个符号(+或-)。如果找到一个数字或符号,它便保存该数字并读取下一个字符。scanf()不断地读取和保存字符,直到遇到非数字字符。如果遇到了非数字字符,它便认为读到了整数的末尾。然后,scanf()把非数字字符放回输入。这意味程序在下次输入时,首先读到的是上一次读取丢弃的非数字字符。最后,scanf()计算已读取数字(可能还有符号)相应的数值,并将计算后的值放入指定的变量中。
如果使用字段宽度,scanf()会在字符结尾或者第一个空白字符处停止读取。
3.如果第一个非空白字符是A而不是数字,会发生什么情况?
scanf()将停在哪里,并把A放回输入中,不会把值赋给指定变量。程序在下次读取输入时,首先读到的字符是A。如果程序只是用%d转换说明,scanf()就一直无法越过A读下一个字符。
另外,如果使用多个带转换说明的scanf(),C规定在第一个出错处停止读取输入。
4.使用%s转换说明,scanf()的情况如何?
scanf()会读取除空格以外的所有字符。scanf()跳过空白开头读取第一个非空白字符。并保存非空白字符直到再次遇到空白。这意味着scanf()根据%s转换说明读取一个单词,即不包含空白字符的字符串。如果使用字符宽度,scanf()在字段末尾或第一个空白字符处停止读取。最后需要注意的一点是,当scanf()把字符串放进指定数组中时,它会在字符序列末尾加上'\0',让数组中的字符串成为一个C字符串。
5.printf()的*修饰符
如果你不想预先指定字符宽度,希望通过程序来指定,那么可以用*修饰符来代替字段宽度。但还是要用一个参数告诉函数,字段宽度应该是多少。
举个栗子:
#include<stdio.h>
int main(void)
{
unsigned width,precision;
int number=256;
double weight 242.5;
printf("Enter a field width:\n");
scanf("%d",width);
printf("The number is : %*d \n",width,number);
printf("Now enter a width and a precision:\n");
scanf("%d %d",&width,&precision);
printf("Weight = %*.*f\n",width,precision,weight);
printf("Done!\n");
return 0;
}
6.scanf()的*用方法
把*放在%和转换字符中间,会使得scanf()跳过相应的输出项。
- 【C语言基础】-02字符串和格式化输入/输出
- c语言基础(4)--字符串和格式化输入/输出
- C语言基础:字符串和格式化输入/输出
- C语言学习_004_字符串和格式化输入/输出
- C -- 字符串和格式化输入/输出
- C语言格式化输入/输出
- 字符串和格式化输入/输出
- 字符串和格式化输入/输出
- 字符串和格式化输入/输出
- 字符串和格式化输入/输出
- c primer plus 5 ch4 字符串和格式化输入/输出
- C学习笔记(四)字符串和格式化输入\输出
- 【C语言笔记】格式化的输入和输出
- C 语言之格式化输入与输出
- C语言格式化输出与输入
- 第四章 字符串和格式化输入/输出
- 第四章 字符串和格式化输入\输出
- Java字符串、输入和格式化输出
- [三分套三分] Codeforces Gym 100307 NEERC 13 E. Easy Geometry
- 头像上传实例
- nyoj-部分和问题
- 大家好 我是萌新
- java IO流读取图片供前台显示
- C语言基础:字符串和格式化输入/输出
- tpshop开源商城怎么样
- Matlab studying(1)变量以及矩阵的使用~
- Java基础面试题
- org.springframework.dao.DataIntegrityViolationException:
- 图的存储结构与搜索
- MyBatis Mapper3接口大全
- 【引用】java中匿名内部类的两种实现方式
- 缺少Python27_d.lib的解决方法