赞
踩
在 C 语言中,字符串实际上是使用空字符 \0 结尾的一维字符数组。因此,\0 是用于标记字符串的结束。
空字符(Null character)又称结束符,缩写 NUL,是一个数值为 0 的控制字符,\0 是转义字符,意思是告诉编译器,这不是字符 0,而是空字符。
比如:下面声明和初始化创建了一个 RUNOOB 字符串。由于在数组的末尾存储了空字符 \0,所以字符数组的大小比单词 RUNOOB 的字符数多一个。
char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};
# 依据数组初始化规则,您可以把上面的语句写成以下语句:
char site[] = "RUNOOB";
以下是 C/C++ 中定义的字符串的内存表示:
其实,您不需要把 null 字符放在字符串常量的末尾。C 编译器会在初始化数组时,自动把 \0 放在字符串的末尾。
#include <stdio.h>
int main() {
char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};
char str1[7] = "runoob";
printf("菜鸟教程: site=%s\n", site); // 菜鸟教程: site=RUNOOB
printf("菜鸟教程: str1=%s\n", str1); // 菜鸟教程: str1=runoob
return 0;
}
C 语言中的标准库可以找到大量操作字符串相关的函数,比如:
示例如下:
#include <stdio.h> #include <string.h> int main() { char str1[14] = "runoob"; char str2[14] = "google"; char str3[14]; int len; /* 复制 str1 到 str3 */ strcpy(str3, str1); printf("strcpy( str3, str1) : %s\n", str3); /* 连接 str1 和 str2 */ strcat(str1, str2); printf("strcat( str1, str2): %s\n", str1); /* 连接后,str1 的总长度 */ len = strlen(str1); printf("strlen(str1) : %d\n", len); printf("str1= %s\n", str1); printf("str2= %s\n", str2); printf("str3= %s\n", str3); return 0; }
输入输出(Input and Output, IO)是用户和程序“交流”的过程。在控制台程序中,输出一般是指将数据(包括数字、字符等)显示在屏幕上,输入一般是指获取用户在键盘上输入的数据。
在C语言中,有多个函数可以用来在显示器上输出数据,它们分别是:
C语言有多个函数可以从键盘获得用户输入,它们分别是:
C 语言中的 I/O (输入/输出) 通常使用 printf() 和 scanf() 两个函数,在 “stdio.h” 头文件中声明。重点掌握。
getchar() & putchar() 函数,需要添加"stdio.h" 头文件:
示例如下:
#include <stdio.h>
int main() {
int c;
printf("Enter a value :");
c = getchar();
printf("\nYou entered: ");
putchar(c);
printf("\n");
return 0;
}
gets() & puts() 函数,需要添加"stdio.h" 头文件:
示例如下:
#include <stdio.h>
int main( )
{
char str[100];
printf( "Enter a str :");
gets( str );
printf( "\nYou entered: ");
puts( str );
return 0;
}
当上面的代码被编译和执行时,它会等待您输入一些文本,当您输入一个文本并按下回车键时,程序会读取一整行直到该行结束。
scanf() 和 printf() 函数,需要添加"stdio.h" 头文件:
format 可以是一个简单的常量字符串,但是您可以分别指定 %s、%d、%c、%f 等来输出或读取字符串、整数、字符或浮点数。
printf() 函数是最灵活、最复杂、最常用的输出函数,完全可以替代 puts() 和 putchar()。
基本语法:printf(格式控制, 输出列表);
printf() 函数的格式控制符:
printf() 格式控制符的完整形式如下:
%[flag][width][.precision]type
[ ] 表示此处的内容可有可无,是可以省略的。
(1) type 表示输出类型,比如 %d、%f、%c、%lf,type 就分别对应 d、f、c、lf;再如,%-9d中 type 对应 d。
type 这一项必须有,这意味着输出时必须要知道是什么类型。
(2) width 表示最小输出宽度,也就是至少占用几个字符的位置;例如,%-9d中 width 对应 9,表示输出结果最少占用 9 个字符的宽度。
当输出结果的宽度不足 width 时,以空格补齐(如果没有指定对齐方式,默认会在左边补齐空格);当输出结果的宽度超过 width 时,width 不再起作用,按照数据本身的宽度来输出。
(3) .precision 表示输出精度,也就是小数的位数。
示例如下:
#include <stdio.h> int main() { int a1 = 20, a2 = 345, a3 = 700, a4 = 22; int b1 = 56720, b2 = 9999, b3 = 20098, b4 = 2; printf("%-9d %-9d %-9d %-9d\n", a1, a2, a3, a4); printf("%-9d %-9d %-9d %-9d\n", b1, b2, b3, b4); printf("%9d %9d %9d %9d\n", b1, b2, b3, b4); // %-9d中,d表示以十进制输出,9表示最少占9个字符的宽度,宽度不足以空格补齐,-表示左对齐(如果没有指定对齐方式,默认会在左边补齐空格)。 printf("=============\n"); /* 对输出结果的说明: 对于 n,.precision 表示最小输出宽度。n 本身的宽度为 6,当 precision 为 9 时,大于 6,要在 n 的前面补 3 个 0;当 precision 为 4 时,小于 6,不再起作用。 对于 f,.precision 表示输出精度。f 的小数部分有 6 位数字,当 precision 为 2 或者 4 时,都小于 6,要按照四舍五入的原则截断小数;当 precision 为 10 时,大于 6,要在小数的后面补四个 0。 对于 str,.precision 表示最大输出宽度。str 本身的宽度为 9,当 precision 为 5 时,小于 9,要截取 str 的前 5 个字符;当 precision 为 15 时,大于 9,不再起作用。 */ int n = 123456; double f = 882.923672; char *str = "abcdefghi"; printf("n: %.9d %.4d\n", n, n); printf("f: %.2lf %.4lf %.10lf\n", f, f, f); printf("str: %.5s %.15s\n", str, str); return 0; }
flag 是标志字符。例如,%#x中 flag 对应 #,%-9d中 flags 对应-。下表列出了 printf() 可以用的 flag:
#include <stdio.h>
int main() {
int m = 192, n = -943;
float f = 84.342;
printf("m=%10d, m=%-10d\n", m, m); //演示 - 的用法
printf("m=%+d, n=%+d\n", m, n); //演示 + 的用法
printf("m=% d, n=% d\n", m, n); //演示空格的用法
printf("f=%.0f, f=%#.0f\n", f, f); //演示#的用法
return 0;
}
对输出结果的说明:
scanf() 函数是最灵活、最复杂、最常用的输入函数,但它不能完全取代其他函数。
基本语法:scanf(格式控制, 地址列表);
scanf() 函数的格式控制符:
示例如下:
#include <stdio.h> int main() { char letter; int age; char url[30]; float price; scanf("%c", &letter); scanf("%d", &age); scanf("%s", url); //可以加&也可以不加& scanf("%f", &price); printf("字符 letter = %c。\n", letter); printf("整数 c = %d,url = %s,小数 price = %g。\n", age, url, price); return 0; }
实例1:
#include <stdio.h>
int main() {
float height, weight;
double BMI;
printf("请输入你的身高和体重:");
scanf("%f %f", &height, &weight); // 空格分隔,回车
BMI = weight / (height * height);
printf("你的身体质量指数(BMI)为: %f。\n", BMI);
return 0;
}
实例2:
#include <stdio.h> int main() { int loc, ser; printf("请输入你的工位号:"); scanf("%d", &loc); //回车 printf("\n请输入你的密码:"); scanf("%d", &ser); //回车 if (loc == 123 && ser == 123456) { printf("\n已签到(%d),谢谢", loc); } else { printf("\n对不起,工位号或者密码有误!"); } return 0; }
– 求知若饥,虚心若愚。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。