C 字符串和格式化输入与输出

1.前导程序

#include<stdio.h>
#include<string.h>        //1提供strlen()的函数原型
#define DENSITY   62.4    //2预处理命令
int main(void)
{
    float weight,volume;
    int size,letters;
    char name[40];    //3定义一个长度为40的数组

    printf("Hi! What‘s your first name?\n");
    scanf("%s",name);
    printf("%s,What‘s your weight in pounds?\n",name);
    scanf("%f",&weight);
    size=sizeof  name;   //4  数组name[]的长度
    letters=strlen(name);//5  调用函数strlen()
    volume=weight/DENSITY;
    printf("well,%s,your volume is %2.2f  cubic feet.\n",name,volume);//%2.2f表示字符宽度为2,精确到小数点后两位
    printf("Also,your first name has %d letters,\n",letters);
    printf("and we have %d bytes to store it in.\n",size);
    return 0;
}

2.关于字符串

(1)字符串是一个或多个字符的序列。如"I am a student!"。

(2)C语言用空字符来标记一个字符串的结束。数组的单元数必须至少比要存储的字符数多1。

(3)字符串和字符。‘x‘和"x"的区别(后者是一个字符串由‘x‘和‘\0‘组成)。

(4)Sizeof()和strlen()函数。

  • 同一个字符串,sizeof()把标志字符串结尾的空字符计算在内,长度比strlen()大1.
  • strlen()以字符为单位给出字符串的长度。sizeof()给出数组的长度(分配的内存单元)。
  • 获取一个类型大大小~获取一个具体量的大小。sizeof(char)和sizeof (name)=sizeof name。

sizeof()和strlen()
#include<stdio.h>
#include<string.h>
#define PRAISE  "What a super marvelous name!"
int main(void)
{
    char name[40];
    printf("What‘s your name?\n");
    scanf("%s",name);
    printf("Hello,%s.%s\n",name,PRAISE);
    printf("Your name of %d letrers occupies %d memory cells.\n",
        strlen(name),sizeof(name));//sizeof name
    printf("The phrase of praise has %d letters",
        strlen(PRAISE));
    printf("and occupies %d memory cells.\n",sizeof(PRAISE));//sizeof PRAISE
    return 0;
}

sizeof()和strlen()

3.常量和C预处理器

(1)常量如0.015。float taxrate=0.015。把常量0.015赋值给变量taxrate,但程序可能意外的改变它的值。

(2)两种方法const修饰符和#define预处理命令

  • const  int MONTHS=12;
  • #define MONTHS     +12;(#define TEE  ‘T‘)(#define OOPS  "Now you have it!")

4.printf()函数

(1)printf():(“控制描述"+变量列表)~(变量使用的是值,无论该值是变量、常量、还是表达式)。

(2)printf()转换说明符:%c--一个字符、%d--有符号十进制整数、%e--浮点数e记数法、%、f--浮点数十进制、%p--指针、%%--打印一个%、%s--字符串...:

  • 请避免不匹配的转换。

(3)printf()标志符:-(左对齐)、+(带符号)、#(...)、0(对所有数字格式,用前导0填充字段宽度)

  • 打印一个字符串的前8个字符,字段宽度为8字符(%8.8s)
  • 打印双引号\"....\"
  • 打印一个字段宽度在参数列表中给定的八进制整数(%*0).
  • %5d(00006)
  • 指定固定字段宽度(有效防止溢出)

(4)用printf()打印较长的字符串

a.采用多个printf()函数;

b.在一个printf()中采用(\)和回车键

c.采用字符串连接方法("Hello""world")

printf()打印较长字符串
#include<stdio.h>
int main(void)
{
    printf("Here‘s one way to print a ");
    printf("long string.\n");//a
    printf("Here‘s another way to print a \
long string.\n");//b
    printf("Here‘s the newest way to print a "
        "long string.\n");//c
    return 0;
}

printf()打印较长字符串

(5)printf()的函数返回值(返回所打印字符的数目,如果输出有误则返回-1,常用于检查输出错误。向文件中而非屏幕)

printf()的返回值
#include<stdio.h>
int main(void)
{
    int bph2o=212;
    int rv;

    rv=printf("%d F is water‘s boiling point.\n",bph2o);
    printf("The printf()function printed %d characters.\n",rv);
    return 0;
}

printf()的返回值

5.scanf()函数

(1)scanf()会在遇到第一个空白字符空格、制表符、或者换行符处停止读取。~gets()函数可以用来读取一个字符串。

(2)读取变量类型的值加&,把字符串读进一个字符数组不使用&。

(3)scanf("%d,%d",&n,&m)接受输入  1,2   {scanf("%c",&ch)读取在输入中遇到的第一个字符}

6.关于修饰符*

  • printf()中在字段宽度部分使用*来代替数字

使用可变宽度的输出字段
#include<stdio.h>
int main(void)
{
    unsigned width,precision;
    int number=256;
    double weight=242.5;

    printf("What field width?\n");
    scanf("%d",&width);
    printf("The number is :%*d:\n",width,number);
    printf("Now enter a width and a precision:\n");
    scanf("%d%d",&width,&precision);
    printf("Weight=%*.*f\n",width,precision,weight);
    return 0;
}

使用可变宽度的输出字段

  • scanf()中*使函数跳过相应的输出项目(scanf("%*d%*d%d",&n);前两个跳过)
时间: 2024-11-09 03:45:47

C 字符串和格式化输入与输出的相关文章

C 语言字符串和格式化输入与输出

1.前导程序 1 #include<stdio.h> 2 #include<string.h> //1提供strlen()的函数原型 3 #define DENSITY 62.4 //2预处理命令 4 int main(void) 5 { 6 float weight,volume; 7 int size,letters; 8 char name[40]; //3定义一个长度为40的数组 9 10 printf("Hi! What's your first name?\n

文件格式化输入和输出

在控制台操作时,使用的格式化输入和输出为scanf和printf,那么对文件的IO操作也可以使用fscanf和fprintf,它们的使用如下: #include <stdio.h> #include <string.h> #include <stdlib.h> const int LENGTH=80; int main(void){ long num1=234567L; long num2=345123L; long num3=789234L; long num4=0L

字符串与格式化输入/输出

//主要是数组的scanf用法和strlen sizeof 的区别#include<stdio.h>#define DENSITY 62.4int main(void){ float weight ,volume; int size ,letters; char name[40]; printf("Hi!What's your first name?\n"); scanf("%s",name); printf("%s,what's your w

标准IO之格式化输入和输出

1. 格式化输入 返回值:三个函数的返回值一致,若成功,指定输入的项数,若输入出错或在任意变换前已到达文件结尾则返回EOF (1). scanf 原型:int scanf(const char *restrict format, ...); 最基础,从标准输入输入 (2). fscanf 原型:int fscanf(FILE *restrict fp, const char *restrict format, ...); 和(1)相比,可以指定流fp,不再局限标准输入 (3). sscanf 原

0X04 字符串和格式化输入/输出

字符串(character string)就是一个或多个字符的序列.如:"hello world",双引号不是字符串的一部分,而是通知编译器,这是一个字符串. C没有为字符串定义专门的变量类型,而是把它存储在一个char数组中.该数组的单元数必须要比字符数多1,因为字符串在数组的最后一个位置会有\0. 在printf中用%s表示打印一个字符串. strlen()函数,以字符为单位给出字符串的长度.需要使用string.h头文件,该头文件中包含许多与字符串相关的函数原型. sizeof:

C Primer Plus 第4章 字符串和格式化输入/输出 编程练习

1. #include <stdio.h> int main(void) { char first_name[40]; char last_name[40]; printf("请输入您的名字: "); scanf("%s", last_name); printf("请输入您的姓氏: "); scanf("%s", first_name); printf("%s, %s", last_name,

no.6 字符串和格式化输入/输出

#include<stdio.h> #include<string.h> void main() { char FirstName[40]; char LastName[40]; printf("请分别输入你的名字和姓氏:\n"); scanf("%s",FirstName); scanf("%s",LastName); printf("+++++++++\n"); printf("%s,%s

【C语言学习】《C Primer Plus》第4章 字符串和格式化输入/输出

学习总结 1.String str=”hello world!”;(Java),char[20]=” hello world!”;(C).其实Java字符串的实现,也是字符数组. 2.字符串的尾部都会以空字符(\0)结束,所以” hello world! “这个字符数组的长度是13.<string.h>函数库有个strlen()函数可以计算机字符串的字符数组长度(不包括空字符\0). 3.scanf(“%s”,name)和gets的差别: 1 #include <stdio.h>

no.6 字符串和格式化输入/输出04

#include<stdio.h> void main() { double a,b; printf("请输入你的身高:\n"); scanf("%lf",&a); b=a/2.54; printf("身高转换为英寸是:%lf cm\n",b); }