一、字符串
    字符:类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号
    串:是一种数据结构,存储类型相同的若干个数据,对于串型结构的处理是批量性的,会从头开始直到遇到结束标志停止
    字符串:由字符组成的串行结构,结束标志是 '\0'
    1、字符串的存在形式
        1.字符数组:char str[10] = {'a','b',...};
            由char组成的数组,注意要为'\0'预留位置,初始化麻烦
            存储在栈内存中,数据可以修改
        2.字符串字面值:"由双引号包含的若干个字符"
            末尾会隐藏一个'\0',定义也方便
            存储在text段中, 是常量,不能修改
        *常用方式:字符数组[] = "字符串字面值";
            会自动为'\0'预留位置
            注意:赋值完成后,该字符串在内存中有两份
    2、字符串的输入和输出
        1.输入
            scanf(%s,地址);
                缺点:不能输入空格
            char *gets(char *s);
                功能:输入字符到s中
                返回值:s 链式调用
                缺点:输入的长度不受限制,会产生警告
            char *fgets(char *s, int size, FILE *stream);
                功能:输入长度最多为size-1个字符串,会自动为'\0'预留位置,超出部分不接受,不足时最后的'\n'也会一起接收
                返回值:s 链式调用
        2.输出
            printf(%s,地址);
            int fputs(const char *s);
                功能:输出一个字符串,并且会自动在末尾打印一个'\n'
                返回值:成功输出的字符个数
    3、输出缓冲区
        *缓冲区机制可以提高数据的读取速度,还可以让低速的设备与高速的CPU协调工作
        程序员要显示的数据并不会立即显示到屏幕上,而是先存储到输出缓冲区中,当满足一定条件时才会输出缓冲区显示到屏幕上
            1.遇到'\n'
            2.遇到输入语句
            3.当缓冲区满4k
            4.程序正常结束时
            5.fflush(stdout);  //手动刷新输出缓冲区
    4、输入缓冲区
        程序中输入的数据并不会立即从键盘接收到变量中,而是当按下回车后先存储到输入缓冲区中,然后再从缓冲区中读取到变量内存中
            情况1:需要输入的是整数/浮点型时,而缓冲区中的数据是字符型时,此时读取会失败,并且该数据会继续残留在输入缓冲区中,会继续影响剩下的输入
                解决:根据scanf的返回值判断输入是否有问题,如果读取失败,则先清理输入缓冲区后重新输入,直到读取成功为止
            情况2:通过fgets可以指定读取size-1个字符,但是如果输入超过,则字符会残留在输入缓冲区中,会继续影响接下来的输入
                解决:
                    方法一:scanf("%*[^\n]");scanf("%*c");  //从缓冲区中读取任意类型数据并丢弃,直到遇到'\n'停止;从缓冲区中读取任意字符类型并丢弃
                    方法二:stdin->_IO_read_ptr = stdin->_IO_read_end  //把输入缓冲区的位置指针从当前位置移动到末尾,详单与清理输入缓冲区(Linux下)
            情况3:当先输入整型/浮点型,再输入字符型时,输入整型/浮点型后按下的回车或空格会残留在输入缓冲区,而被后面的字符型接收
                解决:在%c或者gets()前面加空格:scanf(" %c");
    5、字符串相关函数
        #include <string.h>
        size_t strlen(const char *s);
            功能:计算字符串的长度,不包含'\0'
       
        char *strcpy(char *dest, const char *src);
            功能:把src拷贝给dest,相当于赋值
            返回值:dest的首地址  //链式调用
        char *strcat(char *dest, const char *src);
            功能:把src追加到dest的末尾,相当于+=
            返回值:dest的首地址  //链式调用
        int strcmp(const char *s1, const char *s2);
            功能:比较两个字符串
            返回值:s1 > s2 正数;s1 == s2 零;s1 < s2 负数
        char *strstr(const char *haystack, const char *needle);
            功能:在haystack中查找是否存在字串needle
            返回值:needle在haystack中第一次出现的位置,如果找不到返回NULL
        #include <stdlib.h>
        int atoi(const char *nptr);
            功能:字符串转int整型
        int atof(const char *nptr);
            功能:字符串转double整型
        #include <stdio.h>
        int sprintf(char *str, const char *format, ...);
            功能:把各种类型的数据转换成字符串输入到str中
        int sscanf(const char *str, const char *format, ...);
            功能:从str中解析出各种类型的数据,并存储带对应的变量中

Linux & 标准C语言学习 <DAY13>的更多相关文章

  1. Unix和Linux下C语言学习指南

    转自:http://www.linuxdiyf.com/viewarticle.php?id=174074 Unix和Linux下C语言学习指南 引言 尽管 C 语言问世已近 30 年,但它的魅力仍未 ...

  2. linux 下C语言学习路线

    UNIX/Linux下C语言的学习路线.一.工具篇“公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工 ...

  3. UNIX/Linux下C语言的学习路线

    一.工具篇 “公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工具. 1.操作系统    在UNIX或 ...

  4. C语言学习008:标准错误

    在上一节中的数据文件中(C语言学习007:重定向标准输入和输出),如果文件中的数据包含非法数据,如何让程序显示一条错误的提示消息呢?就需要用到标准错误 #include <stdio.h> ...

  5. Linux下C语言编程基础学习记录

    VIM的基本使用  LINUX下C语言编程 用gcc命令编译运行C语言文件 预处理阶段:将*.c文件转化为*.i预处理过的C程序. 编译阶段:将*.i文件编译为汇编代码*.s文件. 汇编阶段:将*.s ...

  6. 实验四 Linux系统C语言开发环境学习

    项目 内容 这个作业属于哪个课程 Linux系统与应用 这个作业的要求在哪里 作业要求链接 学号-姓名 17041428-朱槐健 作业学习目标 1.Linux系统下C语言开发环境搭建 2.学习Linu ...

  7. 【C语言学习】《C Primer Plus》第1章 概览

    学习总结 1.C语言于1972年由贝尔实验室的Dennis Ritchie在与Ken Thompson一起设计UNIX操作系统的时候开发的.的的设计构想来源于Ken Thompson的B语言.Anyw ...

  8. LINUX下C语言编程基础

    实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...

  9. 郝斌老师C语言学习笔记(一)

    在给变量分配内存时,很可能这段内存存在以前其他程序使用留下的值.当使用VC编译器,若编译器发现没有给变量赋值而使用,就会返回一个以“85”开头的很大的数字(此时该段内存中为一个垃圾数,为了避免出现较常 ...

  10. 【转】朱兆祺教你如何攻破C语言学习、笔试与机试的难点(连载)

    原文网址:http://bbs.elecfans.com/jishu_354666_1_1.html 再过1个月又是一年应届毕业生应聘的高峰期了,为了方便应届毕业生应聘,笔者将大学四年C语言知识及去年 ...

随机推荐

  1. centos7 七步教你安装搭建 LAMP 服务

    先说说LAMP是什么 LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写: Linux,操作系统 Apache,网页服务器 MariaDB或MySQL,数据库管理系统(或者数 ...

  2. Qt实现collapsePanel(折叠)功能

    实践过程中,看到C#实现的CollapsePanel功能,比一般的TabWidget更加直观,充分利用了页面空间,遂感到很有兴趣,也查阅了很多资料搜索Qt在这方面的实现. 目前来说,比较常见的作法就是 ...

  3. 【NumPy】Python将数组中低于一定百分比的值替换

    情景举例 现有一个一维数组(或二维进行遍历)存放着很多,找到低于中位数20%的值并将小于该值的数全部替换为该值. 涉及方法 np.median(data, axis=0)用于计算数组中元素的中位数(中 ...

  4. Jmeter一、开源软件的崛起

    一.jmeter自身特点: 1.开源,轻量级,更适合自动化和持续集成. 2.学习难度大. 3.资料少.多英文. 二.性能测试工具选型的原则 1.成本: a.工具成本 b.学习成本 2.通信协议: a. ...

  5. Educational Codeforces Round 2 个人总结A-E

    Educational Codeforces Round 2 A. Extract Numbers 简单的模拟 bool check(string op) { if(op.size()==1& ...

  6. Elasticsearch 查询小笔记

    2.x 版本,组合多查询https://www.elastic.co/guide/cn/elasticsearch/guide/current/combining-queries-together.h ...

  7. 5-3 掌握 egg.js + 云 mongodb

    1 egg.js 1.1 初始化 初始化和项目启动方法 # 初始化 $ mkdir egg-example && cd egg-example $ npm init egg --typ ...

  8. md文件使用说明

    md文件简单使用介绍 二级标题 三级标题 斜体文本 粗体文本 粗斜体文本 分隔线 删除号 带下划线 创建脚注格式类似这样 [1]. #include <iostream> using na ...

  9. Crypto入门 (十一)easychallenge

    前言: 这题跟python有关,可见看懂python代码还是很有必要得,需要有一些python基础才好 easychallenge: 题目: 下载后来发现是一个.pyc为后缀得文件,查找资料可知,该文 ...

  10. 估计人数【最小路径重复点覆盖】【直接在(i,j)建一个新点】

    估计人数 题意 思路 用最少的人,走完这几条线.最小重复路径点覆盖问题 建图之后,跑一下二分图. 考虑建图:图中'1'连着完下.或者右走.我们把图中所有的1编号,然后建图,然后floly,然后匈牙利. ...