字符串函数的补充
1. fputs();函数 f:代表File文件 也就是文件的输出
作用: 将字符串数据 输出到 指定的流中
流: 标准输出流 —> 控制台。
文件流 —> 磁盘上的文件。
使用格式:
fputs(要输出的字符串数组的名字,指定的流);
1)要使用fputs函数将字符串数据输出到标准输出流。
标准输出流: 也就是控制台:stdout
例:
char *name = “秀波蜀黍”;
fputs(name,stdout);
2)将字符串存储在文件当中:
a. 要先声明1个文件指针,指向磁盘上的文件。
fopen函数可以创建1个指向文件的指针。
fopen函数的两个参数:
第一个参数:文件的路径,代表创建的指针指向这个文件。
第二个参数:操作文件的模式,你要对这个文件做什么操作,必须要告诉它。
“w” —> write 代表你要这个文件写入内容;
“r” —> read 代表你从这个文件读取数据;
“a” —> apped 代表你要向这个文件中追加数据;
注意:
当操作模式是”w”的时候,如果文件不存在,就会创建这个文件,写入你要写的东西。 如果存在,就会将原来的文件替换掉,重新写入新的你要写的东西!
当操作模式是”a”的时候,如果文件不存在,就创建这个文件,写入你要追加的东西。 如果存在,就会在原有的内容上追加你写的内容!
b. 使用fputs函数将字符串写入指定的文件流中。
格式:
fputs(字符串数组名字,文件指针名字);
c. 写完之后,一定要记得使用fclose();函数 将这个文件关闭!
例:
FILE *pFile = fopen(“文件路径”,”w");
char *name = “秀波蜀黍”;
fputs(name,pFile);
fclose(pFile);
printf(“写入成功!\n");
2. fgets();函数 f:代表File文件 也就是文件接收读取
作用: 从指定的流当中读取字符串!
这个流可以是标准输入流 —> 控制台。
也可以是我们的文件流。
语法格式:
fgets(要将字符串存储到哪个数组中它的名字,最多接收多少个长度的字符串,指定流);
注意:
第二个参数:我们写一个N,那么这个函数最多接收N-1个长度的字符串!
这个参数一般情况下和第1个参数数组的长度一致!
stdin: 代表标准输入流,也就是键盘流,控制台输入。
例:
char input[10];
printf(“请输入:\n");
fgets(input,10,stdin);
printf(“你输入的是:%s\n”,input);
1)使用 fgets(); 函数从标准输入流中读取数据。
也就是 从控制台接收用户输入的字符串。
前面学习的 scanf函数 和 gets函数 也可以实现这个功能!
但:
scanf 的缺点:
a. 不安全
b. 输入的空格会被认为是结束
gets 的缺点:
a. 不安全
fgets 的优点:
a. 安全!
b. 空格也会一并接收!
为什么安全呢?
a. 如果我们输入的字符串的长度大于等于了 第二个参数N,它只会接收前面的N-1个,然后最后一个自动为'\0’。这样就不会崩溃了!
b. 如果我们输入的字符串的长度刚好等于 N-1,那就是最完美的。
c. 如果输入了的字符串的长度小于了N-1,那么就会将我们最后输入’\n’一并的接收。然后后面才是’\0’结束符!
解决方案:输入完毕之后,判断字符数组当中存储的字符串最后1个是不是’\n’ 。如果是’\n’,那么我们就将其替换成’\0’。
案例:
// 创建一个指定的数组,用来保存用户输入数据
char input[5];
// 提示用户输入数据
printf(“请输入:\n");
// 调用fgets函数,接收读取用户输入的数据
fgets(input,10,stdin);
// 输出用户输入的东西
printf(“你输入的是:%s\n”,input);
// 计算用户输入的数据字符串的长度
// 需要用到strlen();函数,接的引string.h头文件
int len = strlen(input);
// 判断用户输入的字符串的最后一个字符是否是’\n'
if(input[len -1] == ‘\n')
{
// 此时是用户输入的字符串最后一位字符是’\n’,所以将其强制换成’\0’,让其正常结束
input[len - 1] =‘\0’;
}
2)使用 fgets(); 函数从文件流中读取数据。
也就是读取磁盘上文件的内容。
a. 先创建文件指针
b. 准备一个字符数组。准备存储读取到的字符串数据
c. 使用 fgets(); 函数从指定的文件流中读取
d. 读取成功,输出一下验证
e. 关闭文件流!!
代码如下:
// 第一步:创建1个读取文件的文件流
FILE *pFile = fopen(“文件的路径”,”r");
// 第二步:准备一个字符数组。准备存储读取到的字符串数据
char content[50];
// 第三步:使用 fgets(); 函数从指定的文件流中读取
fgets(content,50,pFile);
// 第四步:输出,看一下是否读取到了指定文件流中的数据
printf(“读取的内容是:%s\n”,content);
// 第五步:关闭文件流!!!!
fclose(pFile); |
|