string操作、文件操作

来源:互联网 发布:阿里云esc绑定域名 编辑:程序博客网 时间:2024/03/28 16:27
程序在内存中是分段落保存的
代码段  存放所有语句,在运行是内容不可以修改

全局段 用来存放全局变量和静态变量,大小不随着程序的运行而改变


采用后进先出的管理方式,大小随着程序的运行不断变化
                栈里为每个函数的每次运行分配一个私有的区域
                每次函数运行结束后它的私有区域被回收
                局部变量,形式参数,和返回值都放在栈里

        堆          存放动态分配的数据,堆中变量的生命周期是程序员管理的


C 语言中使用内存中一组连续的存储位置表示文字信息
ASCII 码为 0 的字符用 '\0' 表示,它用来表示一段文字信息的结束位置
这些存储位置叫做字符串

字符串的开始位置使用第一个字符存储位置的地址表示


    C 语言中可以使用一个 char* 指针变量表示一个字符串
字符串字面值是实现字符串的一种方法,例如 "abc","3+4%6",两个双引号之间
编译器在编译时自动给字面值加 '\0' 结尾字符
编译器自动把字符串字面值替换成首字符地址
    在程序运行时字符串字面值被存储在专门的段落里,这个段落是不可修改的
    多个同样内容的字符串字面值在程序运行时只占有一份内存空间
并列的多个字符串字面值在编译时会被合并成一个字面值
C 语言中也可以使用字符数组表示字符串
编译器不会自动向字符数组中加 '\0' 字符
char buf[] = {'a','b','c','\0','d','e'}  表示 "abc" 字符串
可以使用字符串字面值给字符数组进行初始化 字面值最后的 '\0' 会被加到字符串数组的后面
char buf[] = "xyz" ;包含四个字符 数组里会加 '\0' 
sizeof(buf) = 4;
char buf[3] = "xyz" ; 数组不是字符串,没位置加 '\0'
初始化完成后字面值和字符数组各自有自己的存储位置互相之间没有关系

字符数组在内存中存放的段落不确定但一定是可以修改的


    C 语言提供多种对字符串进行操作的标准函数
    这些标准函数都需要包含 string.h 文件
    strlen    用来获得字符串中有效字符的个数
    strcat    把一个字符串追加在另一个字符串的后边,返回值表示合并后的结果
              会修改一个参与计算的原字符串,有可能造成数组越界
    strncat   功能类似 strcat 不会数组越界
    strcmp    用来比较两个字符串是否相等,比较依据是字符数据的 ASCII 码
              前一个字符串大时返回 1,后一个字符串大时返回 -1 ,相等是返回 0
    strncmp   只比较两个字符串前 n 个字符
strcpy    用来把一个字符串的内容复制到一个字符数组中
         返回值就是字符数组的首地址,这个函数也可能造成越界
    strncpy   可以只复制 n 个字符
可以使用 %s 做占位符对字符串进行读取和打印操作
使用 scanf 标准函数读字符串会出严重错误
fgets     标准函数可以从任何文件读字符串
在 LINUX 系统所有设备都是文件,键盘和屏幕都可以用文件表示
在程序中可以使用 stdin 表示标准输入文件(通常情况下就是键盘)
    fgets 函数需要三个参数
1.字符数组名称
2.数组中存储位置的个数
3.要读取的文件 (stdin) 
每次使用 fgets 读字符串后都要处理输入缓冲区中的垃圾数据
    
二维字符数组可以用来记录多个相关字符串
这种存储方式不灵活
指针数组也可以用来表示多个相关字符串
这种存储方式非常灵活
    指针数组名称可以赋值给二级指针

主函数也有形参,第二个形参表示一组相关字符串,第一个形参表示相关字符串的个数


1.文件位置指针
2.预处理指令 (宏定义,条件编译...) 
3.多文件的编写


练习    

    1.编写 mystrcat 函数,实现 strcat 函数的多有功能 , 指针编写
    2.编写两个程序,把用户输入的包含多个成绩的字符串拆分成多个成绩字符串并分别记录在二维数组或指针数组中,结果打印出来,成绩个数不超过 5 个

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 25个月宝宝不愿意学说话怎么办 老师说小孩在幼儿园老是说话怎么办 在外留学想领养一个外国小孩怎么办 三岁半的宝宝想去美国上学怎么办 农村新房边的老老祖坟不搬怎么办 倒西太阳晒的房子夏天很热怎么办 客厅壁纸用的浅灰色影视墙怎么办 我喜欢玩手机游戏妈妈很生气怎么办 家里墙上有很多白色的虫子怎么办 3岁半宝宝学数字学不会怎么办 小孩子读一年级拼音读不好要怎么办 4个月的婴儿恶心干呕怎么办 生了小孩后胆汁酸偏高怎么办 9个月宝宝吃盐了怎么办 两个月宝宝母乳拉大便太稀怎么办呀 两个月的宝宝不拉大便怎么办 两个月宝宝五天没拉大便怎么办 4个月宝宝不拉大便怎么办 2个月宝宝3天没拉大便怎么办 宝宝拉不出大便老是憋的哭怎么办 九个月的宝宝不爱吃水果怎么办 顺产侧切伤口发炎化脓有臭味怎么办 一岁宝宝感冒发烧39度怎么办 宝宝二岁半了只吃水果不吃饭怎么办 8个月小孩发烧39度怎么办 咳嗽吃了很多药都不见效果怎么办 生完孩子半个月奶水越来越少怎么办 买到了坏了的水果商家不赔怎么办 小孩奶不够吃又不吃奶粉怎么办 10个月的宝宝便秘很严重怎么办 四岁的宝宝突然不怎么吃饭怎么办 1岁7个月宝宝突然不爱吃饭怎么办 宝宝发烧好了之后不吃辅食怎么办 吃母乳的宝宝不喝奶粉怎么办 奶水不足宝宝又不喝奶粉怎么办 6个月宝宝断奶哭闹不用奶瓶怎么办 小孩不爱吃饭怎么办该吃些什么 二个月宝宝只认母乳不喝牛奶怎么办 满月宝宝只认奶粉不认母乳怎么办 宝宝四个月只认奶瓶不认母乳怎么办 新生儿只认奶瓶不认母乳怎么办