【无标题】

字符串输入

如果想把一个字符串读取到程序中,必须首先预留存储字符串的空间,然后使用输入函数来获取这个字符串,C库提供了三个读取字符串的函数:scanf()、gets()和fgets()。

创建存储空间

可以通过数组(char name[10])来分配存储空间,也可以通过C语言动态分配函数来动态分配存储空间。

char *name;
scanf("%s", name);

gets()函数

gets()(get string)函数,gets()函数通过判断遇到的第一个换行符(\n)结束输入,按回车键可以产生这个字符。它读取换行符之前(不包括换行符)的所有字符,并在这些字符后添加一个空字符(\0)。也可以通过 getchar函数来完成上面的错误检测。

fgets()函数

fgets()函数和gets()函数的不同:

  • 它需要第二个参数来说明最大读入字符数。如果这个参数值为n,fgets()就会读取最多n-1个字符或者读完一个换行符为止(因为会自动添加一个空字符(\n)),由这两者中最先满足的那个结束输入。
  • 如果fgets()读取到换行符,就会把它存到字符串里,而不是像gets()那样丢弃。
  • 它还需要第三个参数来说明读哪一个文件,从键盘上读取数据时,可以使用stdin(代表standard input)作为参数,这个标识符在stdio.h中定义。

scanf()函数

scanf()函数可以使用%s格式来读入一个字符串,scanf()函数和gets()函数的主要区别在于如何决定字符串何时结束。scanf()函数更基于获得单词(get word)而不是获取字符串(get string)。scanf()函数有两种方法决定输入结束,无论哪一种都是遇到的第一个非空白字符开始

  1. 如果使用%s格式,字符串读取到(但不包括)下一个空白字符(比如空格、制表符或换行符)
  2. 如果指定了字段宽度,比如%10s,scanf()函数就会读取10个字符或者直到遇到第一个空白字符,由二者最先满足的那一个终止输入

字符串输出

puts()函数

puts()函数使用很简单,只需要给出字符串参数的地址,它遇到空字符(\0)就会结束输出(所以必须要有空字符)。puts()函数在显示字符串的时候,会自动在其后添加一个换行符(\n)

fputs()函数

fputs()函数puts()函数面向文件版本,两者主要的区别是:

  • fputs()函数需要第二个参数来说明要写的文件,可以使用stdout(standard output)作为参数来进行输出显示。
  • 与puts()函数不同,fputs()函数并不为输出自动添加换行符。

printf()函数

  用于输出
 

结构体

三种定义结构体的方法:

1. struct person 声明了结构体名字
{
char name[20];
int age;
char sex;
char phone[15];
}p1,p2; 同时定义了两个结构体变量

2.struct
{
char name[20];
int age;
char sex;
char phone[15];
}p1,p2; 这个只是定义了两个结构图变量,但是没有声明结构体的名字

3.struct date
{
int year;
int monyh;
int day;
};
struct person
{
char name[20];
int age;
char sex;
char phone[15];
struct date brithday;
char *string;
}
总结:定义在前面的是结构体名字,在后面的是变量名字

结构体数组

结构体数据就是指数组中的每一个元素都是结构体

#include <stdio.h>
struct test{
  int num ;
  float value;
  char ch;
};
int main()
{
    struct test testArr[3]={ {1,1,2},{3,3,4},{5,5,6} };
    for(int i = 0; i<3 ; i++)
    {
        printf("testArr[%d].num=%d\n",i,testArr[i].num);
        printf("testArr[%d].value=%f\n",i,testArr[i].value);
        printf("testArr[%d].ch=%d\n",i,testArr[i].ch);
    }
    return 0;
}

结构体指针

当一个指针变量指向结构体时,称为结构体指针

struct 结构体名 *变量名;

结构体变量名与数组名不一样,数组名在表达式中会被转换成数组指针,而结构体变量名不会,无论在任何表达式中标表示的都是整个结构体本身,要活的结构体变量的地址,则必须使用取地址符&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值