C 字符串和格式化输入与输出

Python035

C 字符串和格式化输入与输出,第1张

1.前导程序

2.关于字符

(1)字符串是一个或多个字符的序列。如"I am a student!"。

(2)C语言用空字符来标记一个字符串的结束。数组的单元数必须至少比要存储的字符数多1。

(3)字符串和字符。'x'和"x"的区别(后者是一个字符串由'x'和'\0'组成)。

(4)Sizeof()和strlen()函数

同一个字符串,sizeof()把标志字符串结尾的空字符计算在内,长度比strlen()大1.

strlen()以 字符 为单位给出字符串的长度。sizeof()给出数组的长度(分配的内存单元)。

获取一个类型大大小~获取一个具体量的大小。sizeof(char)和sizeof (name)=sizeof name。

sizeof()和strlen()

3.常量和C预处理器

(1)常量如0.015。float taxrate=0.015。把常量0.015赋值给变量taxrate,但程序可能意外的改变它的值。

(2)两种方法const修饰符和#define预处理命令

const  int MONTHS=12

#define MONTHS     +12(#define TEE  'T')(#define OOPS  "Now you have it!")

4.printf()函数

(1)printf():(“控制描述"+变量列表)~(变量使用的是值,无论该值是变量、常量、还是表达式)。

(2)printf()转换说明符:%c--一个字符、%d--有符号十进制整数、%e--浮点数e记数法、%、f--浮点数十进制、%p--指针、%%--打印一个%、%s--字符串...:

请避免不匹配的转换。

(3)printf()标志符:-(左对齐)、+(带符号)、#(...)、0(对所有数字格式,用前导0填充字段宽度)

打印一个字符串的前8个字符,字段宽度为8字符(%8.8s)

打印双引号\"....\"

打印一个字段宽度在参数列表中给定的八进制整数(%*0).

%5d(00006)

指定固定字段宽度(有效防止溢出)

(4)用printf()打印较长的字符串

a.采用多个printf()函数;

b.在一个printf()中采用(\)和回车键

c.采用字符串连接方法("Hello""world")

(5)printf()的函数返回值(返回所打印字符的数目,如果输出有误则返回-1,常用于检查输出错误。向文件中而非屏幕)

5.scanf()函数

(1)scanf()会在遇到第一个空白字符空格、制表符、或者换行符处停止读取。~gets()函数可以用来读取一个字符串。

(2)读取变量类型的值加&,把字符串读进一个字符数组不使用&。

(3)scanf("%d,%d",&n,&m)接受输入  1,2   {scanf("%c",&ch)读取在输入中遇到的第一个字符}

6.关于修饰符*

printf()中在字段宽度部分使用*来代替数字

scanf()中*使函数跳过相应的输出项目(scanf("%*d%*d%d",&n)前两个跳过)

用一个长度为41字节的临时char型数组b存放处理后的字符串,将要输出的字符串(长度不超过20)拷贝到b,并在其后衔接一个长20字符的由字母'F'构成的字符串。利用printf函数输出字符串的控制功能就能达到目的。举例代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.

#include "stdio.h"

#include "string.h"

int main(void){

    char s[5][21]={"123","abcdefg1289","This is my C:","ttyout","OK"},b[41],i

    for(i=0i<5i++)

        printf("%-20.20s\n",strcat(strcpy(b,s[i]),"FFFFFFFFFFFFFFFFFFFF"))

    return 0

}

"%-20.20s\n"中:-表示左对齐,第一个20表示占宽20字符,第二个20表示若实际字符串长于20则只取前20个字符输出。

#include<stdio.h>

#include<string.h>

#define  MAX_SIZE  40

void upper(char*)

int main(void){

char a[MAX_SIZE]

scanf("%s", a) //这里去掉\n就可以了,代码没错

upper(a)

printf("%s\n", a)

return 0

}

void upper(char* a){

int i = 0

for( i <= 39&&a[i] >= 'a' && a[i] <= 'z' ++i)

a[i] = a[i] - ('a' - 'A')

}

你下面报错的问题,主要是编译器的问题,变量,数组的申明必须放在最开始,否则表错,但是你放在c++文件里面,就不会报错