zoukankan      html  css  js  c++  java
  • c语言学习笔记第四章——字符串和格式化输入、输出

    B站有视频演示

    本章学习printf函数的输入输出,字符串的定义与实用。

    字符串

    字符串(character string)是一个或多个字符的序列,如下所示:
    "Zing went the strings of my heart!"
    双引号不是字符串的一部分。双引号仅告知编译器它括起来的是字符 串,正如单引号用于标识单个字符一样。

    字符串的存储

    用数组(array)储存字符串(character string)。在该程序中,用户输 入的名被储存在数组中,该数组占用内存中40个连续的字节,每个字节储存 一个字符值。

    使用%s转换说明来处理字符串的输入和输出。注意,在scanf()中, 字符串变量没有&前缀。

    字符串的赋值

    赋初值

    char str[10]="hello";

    中途赋值

    #include<string.h>
    
    strcpy(str, "Good News!"); /*给数组赋字符串*/
    


    输入赋值

    scanf("%s",str);//注意不要加取地址符号
    

    输出函数

    printf()函数

    请求printf()函数打印数据的指令要与待打印数据的类型相匹配。例如, 打印整数时使用%d,打印字符时使用%c。这些符号被称为转换说明 (conversion specification),它们指定了如何把数据转换成可显示的形式。

    image


    函数使用说明

    image

    格式字符串中的转换说明一定要与后面的每个项相匹配,否则会打印出无意义的值

    错误代码:(错误原因:两个%d但是只有一个变量)

    printf("The score was Squids %d, Slugs %d.
    ", score1);
    

    由于 printf()函数使用%符号来标识转换说明,因此打印%符号就成了个 问题。如果单独使用一个%符号,编译器会认为漏掉了一个转换字符。解决 方法很简单,使用两个%符号就行了:

    打印%:

    printf("%%");


    printf()的转换说明修饰符

    标记:

    image

    修饰符:

    image

    讲几种特殊情况:

    1.转化不匹配:

    错误示例:(用%c打印整数)

    int a=1;
    printf("%c",a);

    建议新手控制好这个问题,想要深入研究请看c primer plus原文(电子版208页)

    2.printf函数返回值:

    printf函数返回值返回打印字符的个数。如果有输出错误, printf()则返回一个负值

    3.打印长字符的三种方案:

    printf("Here's one way to print a ");       //写多个printf语句
    printf("long string.
    ");
    
    
    printf("Here's another way to print a     //用加回车换行
    long string.
    ");
    
    
    printf("Here's the newest way to print a "  //多个双引号隔开
    "long string.
    ");


    输入函数

    scanf()函数

    scanf()和 printf()类似,也使用格式字符串和参数列表

    注意:

    如果用scanf()读取基本变量类型的值,在变量名前加上一个&;
    如果用scanf()把字符串读入字符数组中,不要使用&。

    修饰符

    image

    格式字符串中的普通字符:

    scanf("%d,%d", &n, &m);

    scanf()函数将其解释成:用户将输入一个数字、一个逗号,然后再输入
    222
    一个数字。也就是说,用户必须像下面这样进行输入两个整数:
    88,121

    除了%c,其他转换说明都会自动跳过待输入值前面所有的空白。

    scanf()的返回值:

    scanf()函数返回成功读取的项数。如果没有读取任何项,且需要读取一 个数字而用户却输入一个非数值字符串,scanf()便返回0。

    printf()和scanf()的*修饰符

    printf("Weight = %*.*f
    ", width, precision, weight);
    

    一行代码展示了*的能力,即:可以动态调节字符串长度。

    特别注意:

    	double a=1.0;
    	scanf("%lf",&a);
    	printf("%f",a);
    double类型要使用%lf进行输入!!!

  • 相关阅读:
    在python3.7下怎么安装matplotlib与numpy
    kNN(从文本文件中解析数据)
    k-近邻算法(kNN)笔记
    第二章--k-近邻算法(kNN)
    C++学习笔记一 —— 两个类文件互相引用的处理情况
    (转) C++中基类和派生类之间的同名函数的重载问题
    初试 Matlab 之去除水印
    (转) linux之sort用法
    vim 简单配置
    hdu 5358 First One
  • 原文地址:https://www.cnblogs.com/zhaizhaoyang/p/12768916.html
Copyright © 2011-2022 走看看