高质量C编程04-输入输出

传送门《高质量C编程教程汇总》

说明:以下所有下划线符号 _ 均表示空格

一.控制台函数

1.scanf()函数

函数原型:int scanf("%_",&_);
(1)scanf()函数接收输入数据时默认不采集空格,回车,跳格这些空白字符.但使用%c读取数据时除外
(2)在控制字符串中添加一个或多个空白字符表示忽略空白字符录入

//例1
void main()
{
    char ch1,ch2;
    scanf("%c%c",&ch1,&ch2);
    printf("*%c*%c*%c",ch1,ch2);
}

//输入:__ab
//输出:*_*_* 
//例2
void main()
{
    char ch1,ch2;
    scanf("_%c_%c",&ch1,&ch2);
    printf("*%c*%c*%c",ch1,ch2);
}

//输入:__a__b
//输出:*a*b*

(3)scanf中的%[ ]格式控制符
%[指定可输入字符集]
%[^指定不可输入字符集]

//例1
void main()                 |   void main()
{                           |   {   
    char str[100];          |       char str[100];
    scanf("%[abcdef]",str); |       scanf("%[^abcdef]",str);
    printf("%s\n",str);     |       printf("%s\n",str);
}                           |   }
                            |
//input:abczabc             |   //input:xyzaxyz
//output:abc                |   //output:xyz

结论:%[]格式输入非法字符则结束

//例2
void main()                 |   void main()
{                           |   {   
    char str[20];           |       char str[20];
    scanf("%s",str);        |       scanf("%[^\n]",str);
    printf("%s\n",str);     |       printf("%s\n",str);
}                           |   }
                            |
//input:abc_abc             |   //input:abc_abc
//output:abc                |   //output:abc_abc

结论:%s格式输入字符串到 _ 则结束

2.printf()函数

常用附加输出格式控制字符

修饰符含义
m输出数据域宽,数据长度< m,左补空格,否则按实际输出
.n对实数,指定小数点后位数(四舍五入)
对字符串,指定实际输出位数
-输出数据在域内左对齐(缺省右对齐)
0输出数值时指定左边不实用空位置自动填0
#在八进制和十六进制数前显示0/0x

3.其他输入输出函数

(1)putchar('A');
(2)ch = getchar();
(3)puts("string");
(4)gets(str);
注意:gets的缺陷:
gets当指定的空间不够存储要输入的字符串时没有任何拦截!(不会对字符串越界作检查)
(5)fgets(buff,sizeof(buff),stdin);//stdin标准输入
优点:对越界进行检查,自动截断,最多存sizeof(buff)-1
缺点:会把\n存入,buff[strlen(buff)-1]=0清除\n
(6)fputs(buff,stdout);//stdout标准输出

4.转义字符及其作用

字符形式含义
\r回车,将当前位置移到本行开头
\b退格,将当前位置移到前一列
\t水平制表,跳到下一个tab位置
\f换页,将当前位置移到下页开头
\n换行

二.文件操作函数

1.VC++6.0中FILE结构体

C语言中,每个被使用的文件都在内存中开辟一块内存,用来存放文件的有关信息.这些信息都保存在一个结构体变量中.

struct _iobuf
{
    char *_ptr;//pointer to next character position
    int _cnt;//number of characters left in buffer
    char *_base;//pointer to start of buffer
    int _flag;
    int _file;
    int _charbuf;
    int _bufsize;//size of buffer being used
    char *_tmpfname;
}
typedef struct -iobuf FILE;

2.文件打开函数-fopen()

(1)调用方式:
FILE *fp;
fp = fopen("文件名","使用文件方式");
(2)返回值

成功时:返回指明流的指针
失败时:返回一个空指针NULL

(3)使用后应判断返回值是否为NULL
if (NULL == (fp = fopen("file","r")))
{
    printf("can not open this file\n");
    exit(0);//关闭所有文件(stdlib.h)
}

3.文件关闭函数-fclose()

(1)调用方式

fclose(fp)
(2)返回值
顺利关闭时:返回值为0
否则:返回EoF(-1)
(3)判断
ferror(fp)

4.文件定位函数

(1)fseek()函数
fseek(文件类型指针,位移量,起始点)

起始点名字用数字代表
文件开始SEEK_SET0
文件当前位置SEEK_CUR1
文件末尾SEEK_END2

位移量为long型数据,通常在数字末尾加L,就表示long
(2)ftell()函数
ftell(fp)
作用:得到流式文件中的当前位置
引用:


i = ftell(fp);
if (i == -1L)
printf("error\n");

(3)rewind()函数
rewind(fp)
作用:使位置指针重新返回文件的开头

5.文件末尾判断函数-feof()

feof(fp)
到文件末尾时feof(fp)值为1,否则为0

6.文件读取函数-fread()

(1)函数原型

fread(buffer,size,count,fp);

  • buffer:一个指针,对于fread读入数据的存放地址,起始地址
  • size:要读取的字节数
  • count:要进行读取多少个size字节的数据项
  • fp:文件类型指针
(2)返回值

调用成功,函数返回值为count

7.文件写入函数-fwrite()

(1)函数原型

fwrite(buffer,size,count,fp);

  • buffer:对于fwrite,是输出数据的地址,起始地址
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 编程是一种基于模块化设计思想的C语言开发方法。模块化设计是将程序分解为不同的独立功能模块,每个模块都有自己的任务和功能,并且模块之间可以相互调用和交互。 在编程中,通过模块化设计可以将复杂的程序任务分解为更小、更易于管理的模块,使得程序的可读性和可维护性更强。每个模块可以被单独编写、测试和调试,从而提开发效率和代码质量。 C语言作为一种广泛应用于系统开发和嵌入式开发的编程语言,有着效、灵活、底层控制等特点。在编程中,我们可以利用C语言的特性来实现模块化设计。 首先,我们可以将相关功能的代码归纳为一个独立的模块,如输入输出模块、数据处理模块、算法模块等。每个模块可以单独定义接口和数据结构,将内部实现细节隐藏起来,提供统一的调用接口给其他模块使用。 其次,我们可以使用头文件和源文件的方式来组织代码。头文件包含模块的接口声明和数据结构定义,源文件包含具体的实现代码。其他模块在需要调用某个模块时,只需要包含相应的头文件即可,而无需关心具体的实现细节。 此外,我们还可以使用全局变量和静态变量来实现模块之间的数据交互。全局变量可以被不同模块访问和修改,静态变量则只能在当前模块中使用,提了数据的封装性和安全性。 通过以上的模块化设计思想和C语言的特性,可以让编程更加灵活、可扩展和可维护。同时,也促进了代码的复用和团队协作,提了程序的开发效率和质量。 ### 回答2: 编程是指在软件开发过程中,采用更加复杂、灵活和效的编程方式。基于模块化设计思想的C语言开发就是一种编程的方法。模块化设计思想是将软件系统划分为各个独立的功能模块,每个模块负责完成特定的功能,并且模块之间可以相互调用和协作,以实现整个系统的需求。 基于模块化设计思想的C语言开发具有以下优点: 首先,模块化设计让程序的结构更加清晰和易于理解。每个模块都承担着明确的责任和功能,使得代码更加易读和易懂,有利于他人理解和维护。 其次,模块化设计提了代码的复用性。通过合理划分模块,可以将一些功能相似的代码封装为一个模块,这样可以在其他项目中直接引用该模块,提代码的复用率和开发效率。 再次,模块化设计方便了项目的并行开发。每个模块都是相对独立的,开发人员可以并行地开发不同的模块,减少了开发时间,提了开发效率。 另外,基于模块化设计思想的C语言开发也使得代码的测试和调试更加方便。由于每个模块相对独立,可以单独对每个模块进行测试和调试,减少了测试和调试的难度和风险。 最后,模块化设计也有利于团队协作和产品的可维护性。每个模块都由特定的人员负责开发和维护,团队成员之间的协作更加效和灵活,便于长期维护和升级。 综上所述,基于模块化设计思想的C语言开发是一种编程方法,它可以提代码的可读性、复用性、开发效率和可维护性,是现代软件开发中的重要实践。 ### 回答3: 编程是基于模块化设计思想的C语言开发。模块化设计思想是将一个大型程序拆分成多个小模块,每个模块负责特定的功能。通过模块化设计思想,可以提程序的可读性、可维护性和可重用性。 在编程中,我们通常使用C语言进行开发。C语言是一种性能、灵活且广泛应用的编程语言。它有着丰富的库函数和数据类型,可以方便地进行底层编程和系统级开发。 在C语言开发中,我们首先需要进行模块的设计和划分。每个模块负责完成一个具体的功能,例如输入处理、数据处理、界面展示等等。通过模块的划分,我们可以更好地组织代码,使得程序的结构更加清晰。 在模块的实现过程中,我们可以利用C语言提供的函数和数据结构来实现特定的功能。C语言具有强大而灵活的功能,可以方便地操作内存、文件、网络等资源。 模块之间可以通过接口进行数据的传递和函数的调用,从而实现不同模块之间的协同工作。这种模块化的设计思想使得程序的开发和维护更加容易,也方便了多人协同开发。 总而言之,编程是基于模块化设计思想的C语言开发。通过模块化的设计思想和C语言的强大功能,可以实现功能丰富、性能的程序,提开发效率和代码质量

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Story51314

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值