scanf()
1、用于存储字符串的空间应该足够大,防止溢出
2、用%s,遇到空格和\n 终止
3、默认不能接受带有空格的字符串,可以通过正则表达式来接受
scanf(“%[^\n]”,str)
接收除去\n之外的所有东西,这样就把空格给包进来了
字符串操作函数
gets()
获取一个字符串,返回字符串的首地址,可以获取带有空格的字符串
char *gets(char *s)
参数:用来存储字符串的空间
返回值:返回实际获取到的字符串首地址
gets和scanf都是不安全的字符串获取函数
fgets()
他的作用和gets是一样的,也是为了从键盘获取一个字符串
char *fgets(char *s,int size, FILE *stream)
参1:用来存储字符串的空间地址
参2:描述空间的大小
参3:读取字符串的位置(从哪里拿来的字符串)。键盘传来的字符串叫做标准输入:stdin
返回值:返回实际获取到的字符串首地址
会预留\0的空间,能保证字符串不会越界,fgets空间够就读\n,不够就不读\n
printf("%s\n",fgets(str, sizeof(str), stdin));
puts()
默认写出到屏幕
int puts( const char *s)
参1:将一个字符串写出到屏幕,防止误操作把字符串改了
返回值:成功返回非负数,失败返回-1
puts函数输出的东西自带一个回车
fputs()
写出到stdout,但是没有\N的换行符,它默认是往文件里面写的,没有必要加换行符
int fputs(const char * str ,FILE * stream)
参1:代写出到屏幕的字符串
参数:写出位置stdout stdout就是标准输出到屏幕
返回值:成功返回非负数,失败返回-1
strlen()
size_t strlen(const *s);
参1:待求长度的字符串
返回:有效字符串个数
求的是有效长度,到\0结束
获取字符串的有效长度,不包括\0
字符串操作函数,头文件是string。h
上面的头文件是stdio.h
//实现strlen()
int main(void)
{
char str[] = "hello\0world";
int i = 0;
while (str[i] != '\0')
{
i++;
}
printf("%d\n", i);
return EXIT_SUCCESS;
}
字符串追加
//字符串的追加
int main(void)
{
char str1[] = "hello";
char str2[] = "world";
char str3[100]= {0};
int i = 0;
int j = 0;
while (str1[i] != '\0')
{
str3[i] = str1[i]; //循环着将STR1里的东西交给str3
i++;
}
while (str2[j] != '\0' )
{
str3[i] = str2[j];
j++;
i++;
}
printf("%s\n",str3);
return EXIT_SUCCESS;
}