1、字符串的定义:
- 使用字符串字面量:char str[ ]="hello world";
- 使用字符数组:char str[20]={'h','e','l','l','o','w','o','r','l','d'};
- 使用字符指针:char *str = "Hello, World";
当使用字符串字面量和字符数组的方式定义字符串时,编译器会自动在字符序列的末尾添加'\0'。而使用字符指针定义字符串时,并不会在字符串的末尾添加'\0'。
2、字符串的读取和输出:
- scanf("%s",str);读取字符串时,遇到空格会停止读入,例如,运行下方代码,当输入为hello world!时,输入的结果为hello,中间的空格和后面的world并没有读到。
输出结果:scanf("%s",str); printf("%s",str);
- gets(str);读取字符串时,遇到空格不会停止读入,它会读取整行输入,直到遇到换行符后停止读入,自动在输入的字符后面添加一个空字符‘\o’形成字符串。常常和puts()一起使用,用来输出字符串。
gets(str); puts(str);
输出结果:
3、sizeof(str)和strlen(str)的区别:
- sizeof():是求数据类型的大小,比如定义了一个字符数组char str[20],尽管输入的是只有十一个字符的"hello world"字符串,sizeof(str)输出的却是20,而不是11,因为定义的字符数组的大小是20。
- strlen():是求字符串的长度,比如定义了一个字符数组char str[20],输入的是只有十一个字符的"hello world"字符串,strlen(str)输出的是11,因为字符串的长度就是11。并且字符串中的空格也算一个长度,而字符串结尾的空字符'\o'则不算长度。
char s1[20]="hello world"; char s2[20]={'h','e','l','l','o','w','o','r','l','d'}; char s3[]="hello world"; int l1=strlen(s1); int l2=strlen(s2); int l3=strlen(s3); printf("strlen()计算出的字符串长度:%d %d %d\n",l1,l2,l3); int c1=sizeof(s1); int c2=sizeof(s2); int c3=sizeof(s3); printf("sizeof()计算出的字符串长度:%d %d %d",c1,c2,c3);
运行结果如下:
4、sprintf()函数的应用
sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已, 前者打印到字符串中, 后者则直接在命令行上输出。sprintf 函数是 C 语言中用于将格式化字符串写入字符数组的函数,它的原型如下:
函数声明为
int sprintf(char *string, char *format [,argument,…]);
参数:
str为要写入的字符串;
format为格式化字符串,与printf()函数相同;
argument为变量。
常用的sprintf()
函数的使用方法有以下五种:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
//1、字符串拼接
char str1[]="hello ";
char str2[]="world";
char str3[50];
sprintf(str3,"%s %s",str1,str2);
printf("%s\n",str3); // 输出 "Hello world!"
//2、数字转字符串
int num=520;
char str[50];
sprintf(str,"%d",num);
printf("%s\n",str);//输出字符串"520"
//3、填充字符串
char str4[10];
sprintf(str4,"%10s","hello");
printf("%s\n",str4);//输出字符串" hello"
//4、格式化输出
double num1=1.234567;
char str5[50];
sprintf(str5,"格式化后变为 %.3f",num1);
printf("%s\n",str5);//输出字符串1.234,四舍五入保留三位小数
//5、将字符串转换成整数
char str6[]="123456";
int num2=atoi(str6);
printf("转换成整数后的值为%d",num2);//输出转化后的数字"123456"
return 0;
}
代码的运行结果为: