c语言笔记typedef与输出输入

一typedef

1.1概述

:C 语言提供了 typedef 关键字,可以使用它来为类型取一个新的名字

示例:我们可以看到这里 我们将unsigned char 新起一个名字为 BYTE 后面我们定义此类型的变量的时候就可以使用BYTE

cs 复制代码
typedef unsigned char BYTE;
cs 复制代码
BYTE  b1, b2;

那在起了新名字之后 unsigned char 是否可以使用呢?

cs 复制代码
#include <stdio.h>
int main() 
{
    typedef unsigned char BYTE;
    unsigned char a='a';
    BYTE b='b';
    printf("%c\n",a);
    printf("%c\n",b);
}

我们可以看到是可以使用的 我们在使用typedef的时候并不会影响到原来的类型使用 只是起了新名方便我们使用。

当然也可以使用 typedef 来为用户自定义的数据类型取一个新的名字。例如,您可以对结构体使用 typedef 来定义一个新的数据类型名字,然后使用这个新的数据类型来直接定义结构变量

示例:这里提醒大家一下 strcpy的函数头文件在string.h

cs 复制代码
#include <stdio.h>
#include <string.h>
typedef struct BOOK
{
    char name[50];
}Book;
int main() 
{
    Book book;
    strcpy(book.name,"pxd");
    printf("name:%s\n",book.name);
    return 0;
}

1.2 typedef vs #define

#define 是 C 指令,用于为各种数据类型定义别名,与 typedef 类似,但是它们有以下几点不同:

  • typedef 仅限于为类型定义符号名称,#define 不仅可以为类型定义别名,也能为数值定义别名,比如您可以定义 1 为 ONE。
  • typedef 是由编译器执行解释的,#define 语句是由预编译器进行处理的。

二输出和输入

当我们提到输入时,这意味着要向程序填充一些数据。输入可以是以文件的形式或从命令行中进行。C 语言提供了一系列内置的函数来读取给定的输入,并根据需要填充到程序中。

当我们提到输出时,这意味着要在屏幕上、打印机上或任意文件中显示一些数据。C 语言提供了一系列内置的函数来输出数据到计算机屏幕上和保存数据到文本文件或二进制文件中

其实我们只需要介绍几个函数的使用,比如我们经常使用到的printf就是输出函数 可以输出需要的内容到屏幕之上。我们将分三组进行分别的介绍

2.1scanf和printf

2.1.1 scanf

概述:用于从标准输入(键盘)读取并格式化 简单来说就是我们从键盘上键入的值将到程序中使用

基本格式:

cs 复制代码
  scanf(格式化字符串,参数列表);

我们来通过示例来看:

cs 复制代码
#include <stdio.h>
#include <string.h>
int main() 
{
    int a;
    char b;
    char name[5];
    scanf("%d",&a);
    scanf("%s %c",name,&b); 
    printf(":%d\n",a);
    printf(":%c\n",b);
    printf(":%s\n",name);
    return 0;
}

这里我们需要注意的是一般是使用回车来结束一个scanf语句 在需要连续输入的时候格式控制符中间是空间 那我们键入的时候 键入一个值 后面就必须跟一个空间再键入第二个值

2.1.2 printf

cs 复制代码
printf("格式控制字符串",输出列表);

其中普通字符全部原样输出 其中a=就是普通字符 %d是格式控制符 即a输出在屏幕上的位置

cs 复制代码
int a;
printf("a=%d\n",a);

getchar() & putchar() 函数

int getchar(void) 函数从屏幕读取下一个可用的字符,并把它返回为一个整数。这个函数在同一个时间内只会读取一个单一的字符。您可以在循环内使用这个方法,以便从屏幕上读取多个字符。

int putchar(int c) 函数把字符输出到屏幕上,并返回相同的字符。这个函数在同一个时间内只会输出一个单一的字符。您可以在循环内使用这个方法,以便在屏幕上输出多个字符。

请看下面的实例:

实例

cs 复制代码
#include <stdio.h>
 
int main( )
{
   int c;
 
   printf( "Enter a value :");
   c = getchar( );
 
   printf( "\nYou entered: ");
   putchar( c );
   printf( "\n");
   return 0;
}

当上面的代码被编译和执行时,它会等待您输入一些文本,当您输入一个文本并按下回车键时,程序会继续并只会读取一个单一的字符,显示如下:

复制代码
$./a.out
Enter a value :runoob

You entered: r

gets() & puts() 函数

char *gets(char *s) 函数从 stdin 读取一行到 s 所指向的缓冲区,直到一个终止符或 EOF。

int puts(const char *s) 函数把字符串 s 和一个尾随的换行符写入到 stdout

实例

cs 复制代码
#include <stdio.h>
 
int main( )
{
   char str[100];
 
   printf( "Enter a value :");
   gets( str );
 
   printf( "\nYou entered: ");
   puts( str );
   return 0;
}

我们最经常用的还是printf

相关推荐
sealaugh322 小时前
aws(学习笔记第四十八课) appsync-graphql-dynamodb
笔记·学习·aws
黄雪超2 小时前
JVM——函数式语法糖:如何使用Function、Stream来编写函数式程序?
java·开发语言·jvm
ThetaarSofVenice3 小时前
对象的finalization机制Test
java·开发语言·jvm
思则变3 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
lijingguang3 小时前
在C#中根据URL下载文件并保存到本地,可以使用以下方法(推荐使用现代异步方式)
开发语言·c#
¥-oriented3 小时前
【C#中路径相关的概念】
开发语言·c#
CoderCodingNo4 小时前
【GESP】C++四级考试大纲知识点梳理, (7) 排序算法基本概念
开发语言·c++·排序算法
恋猫de小郭4 小时前
Meta 宣布加入 Kotlin 基金会,将为 Kotlin 和 Android 生态提供全新支持
android·开发语言·ios·kotlin
JosieBook4 小时前
【Java编程动手学】使用IDEA创建第一个HelloJava程序
java·开发语言·intellij-idea
Thomas_YXQ4 小时前
Unity3D DOTS场景流式加载技术
java·开发语言·unity