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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© superdite 中级黑马   /  2015-2-18 11:34  /  712 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、创建存储空间

声明字符串的时候如果没有对字符串进行初始化,那么就必须在声明的时候明确指出数组的大小
char name [80];
        表示一个name可以存80个字符的字符串(字符数组)
若char * name [80];
        则表示name是指针数组,可以有80个指向char的指针

二、读取字符串的函数:scant (),gets (),fgets ()

1、gets ()函数

a> 从系统的标准输入设备(键盘)获得一个字符串,读字符串直到遇到第一个换行符(\n)代表字符串结束。把\n之前(不包括\n)的字符再在最后位置加一个空字符(\0)交给调用它的程序,因为gets()也读取了\n且舍去了,所以下一次读取会在新的一行。

b> gets ()函数返回的是读入字符串的地址(指针),出错或如果遇到文件结尾,它就返回一个空地址(不是空字符)或0,这个空地址就是空指针,并用NULL表示。
例:
char name [80];
char * ptr;
ptr = gets (name);             //gets()返回一个指向char的指针,指针赋值给ptr。
printf (“%s? Ah! %s!\n”, name, ptr);                //都会输出 输入的名字

2、fgets ()函数

fgets ()函数让您指定最大读入字符数,防止了因为实际输入的数据超出预留的存储空间,而溢出到相邻的内存区。

格式:fgets (name, n, stdin);

第二个参数指定最大读入字符数为n - 1个或者读完一个换行符\n为止,哪个先满足按哪个来结束输入。
fgets ()如果读取到换行符\n,不会丢弃它,会把\n存在字符串中。
第三个参数来说明读哪个文件,stdin代表从键盘读取输入。
对于重要的编程,应该使用fgets ()函数,这样更安全。

3、scanf ()函数

和gets ()主要的差别:如何决定字符串何时结束。
scanf ()函数获取字符串:
从第一个非空白字符开始读取,直到读取到(但不包括)下一个空白字符结束,更像是获取单词,回车产生的\n会被舍弃;
指定字段宽度,比如%5s,scanf ()就会读入5个字符或直到遇到第一个空白字符,由两个条件最先达到的那个来终止读入。
如果第一次读取没有读完,那么下一次的读取将从上一次调用结束的地方开始读取数据。
        例:  #include <stdio.h>
                int main(void)
                {

                            char name1[11], name2[11];

                            int count;

                        printf("Please enter 2 names.\n");

                            count = scanf("%5s %10s",name1, name2);

                            printf("I read the %d names %s and %s.\n",

                                           count, name1,name2);

                        return 0;

                }

                输入:Portensia Callowit

                输出:I read the 2 names Porte and nsia.

scanf ()函数的返回值:1、成功读取的个数;2、遇到文件结束时返回一个EOF

0 个回复

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