#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
/*
gets:从屏幕获取一个字符串,返回字符串的首地址。可以获取带有空格的字符串。[不安全]
char *gets(char *s);
参数:用来存储字符串的空间地址。
返回值:返回实际获取到的字符串首地址。
注意:由于scanf()和gets()无法知道字符串s大小,必须遇到换行符或读到文件结尾为止才停止接收输入,因此容易导致字符数组越界(缓冲区溢出)的情况。
*/
int main0801(void)
{
char str[100];
printf("获取的字符串:%s\n",gets(str));// 可以获取带有空格的字符串
return 0;
}
/*
fgets:从屏幕获取一个字符串,预留 \0 的存储空间。空间足够读 \n , 空间不足舍弃 \n。[安全]
char *fgets(char* s,int size, FILE strean);
参1:用来存储字符串的空间地址。
参2:描述空间的大小。
参3:读取字符串的位置。键盘-》标准输入: stdin
返回值:返回实际获取到的字符串首地址。
*/
int main0802(void)
{
char str[10];
printf("获取的字符串:%s\n", fgets(str,sizeof(str),stdin));
return 0;
}
/*
puts:将一个字符串写出到屏幕。printf("%s","hello"); / printf(" hello\n"); /puts("hel1o" );
int puts(const char *s);
参1:待写出到屏幕的字符串。
返回值:成功:非负数0。失败:-1。
*/
int main0803(void)
{
char str[]="hello world";
int ret = puts(str);// puts("hello world"); 输出字符串后会自动添加\n换行符。
printf("%d\n",ret); // 输出0
return 0;
}
/*
fputs:将一个字符串写出到stdout。输出字符串后,不添加\n换行符。
int fputs(const char * str, FILE * stream) ;
参1:待写出到屏幕的字符串。 屏幕--》标准输出: stdout
参2:写出位置stdout
返回值:成功:0。失败:-1。
*/
int main0804(void)
{
char str[] = "hello world\n";
int ret = fputs(str,stdout);// 输出字符串后不会添加\n换行符。
printf("%d\n", ret); // 输出0
return 0;
}
/*
strlen()函数:获取一个字符串的有效长度。不包括\n。
size_ t strlen(const char *s);
参1:待求长度的字符串。
返回:有效的字符个数。
*/
int main0805(void)
{
char str[] = "hello world";
printf("sizeof(str)= %d\n", sizeof(str)); // 输出12:包含空格和\0
printf("strlen(str)= %d\n", strlen(str)); // 输出11:包含空格、不包含\0
char str1[] = "hello\0world";
printf("sizeof(str1)= %d\n", sizeof(str1)); // 输出12:包含空格和\0
printf("strlen(str1)= %d\n", strlen(str1)); // 输出5:到\0结束
return 0;
}
// 实现strlen()函数:碰见‘\0’停止。
int main0806(void)
{
char str[] = "hello world";
int i = 0;
while (str[i] != '\0')
{
i++;
}
printf("strlen(str)= %d\n", i);
// 等价于:printf("strlen(str)= %d\n", strlen(str));
return 0;
}
// 字符串拼接
int main0807(void)
{
char str1[] = "hello";
char str2[] = "world";
char str3[100];
int i = 0; // 循环str1
while (str1[i] != '\0')
{
str3[i] = str1[i]; // 循环着将str1的元素赋值到str3
i++;
}
int j = 0; // 循环str2
while (str2[j] != '\0')
{
str3[i+j] = str2[j]; // 此时i=5,循环着将str1的元素赋值到str3
j++;
}
// 手动添加‘\0’标志
str3[i + j] = '\0';
printf("str3= %s\n", str3);
return 0;
}
07 C语言基础--------字符串的输入输出操作
于 2022-04-05 20:39:34 首次发布