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进行输入!!!

  • 相关阅读:
    UVA
    UVA
    模板——扩展欧几里得算法(求ax+by=gcd的解)
    UVA
    模板——2.2 素数筛选和合数分解
    模板——素数筛选
    Educational Codeforces Round 46 (Rated for Div. 2)
    Educational Codeforces Round 46 (Rated for Div. 2) E. We Need More Bosses
    Educational Codeforces Round 46 (Rated for Div. 2) D. Yet Another Problem On a Subsequence
    Educational Codeforces Round 46 (Rated for Div. 2) C. Covered Points Count
  • 原文地址:https://www.cnblogs.com/zhaizhaoyang/p/12768916.html
Copyright © 2011-2022 走看看