A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

字符串函数的补充

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);

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马