首页 > 其他分享 >更多头部文件和语法的简单使用

更多头部文件和语法的简单使用

时间:2023-08-12 21:31:55浏览次数:38  
标签:文件 头部 字符 语法 arr2 arr1 字符串 include left

如以下代码

#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <stdlib.h>

int main(void) {
	
	char arr1[] = "Hello World!";
	
	char arr2[] = "############";
	
	int left = 0;

	int right = strlen(arr1) - 1;//使用"sizeof"(arr)/sizeof(arr[0])-2也可达到相同效果
	
	while (left<=right) {

		
		arr2[right] = arr1[right];//替换右边

		arr2[left] = arr1[left];//替换左边

			right --;
			
			left ++;
			
			Sleep(1000);

			system("cls");

			printf("%s\n", arr2);

	}
	
	return 0;

}

AI解释

这段代码是一个简单的C语言程序。它的主要功能是将字符串"Hello World!"逐渐显示在屏幕上。

让我详细解释一下代码的各个部分:

  1. #include <stdio.h>: 这是包含标准输入输出库的预处理指令,使得程序可以使用标准输入输出函数,比如printf()
  2. #include <string.h>: 这是包含字符串处理库的预处理指令,使得程序可以使用字符串处理函数,比如strlen()
  3. #include <windows.h>: 这是包含Windows特定库的预处理指令,使得程序可以使用Windows特定的函数和定义,比如Sleep()system("cls")
  4. #include <stdlib.h>: 这是包含通用工具库的预处理指令,使得程序可以使用一些基础的工具函数,比如system()
  5. int main(void): 这是程序的主函数,程序从这里开始执行。
  6. char arr1[] = "Hello World!";: 创建一个字符数组arr1并初始化它为字符串"Hello World!"。
  7. char arr2[] = "############";: 创建一个字符数组arr2并初始化它为字符串"############"。
  8. int left = 0;: 创建一个整数变量left并初始化为0。
  9. int right = strlen(arr1) - 1;: 计算arr1的长度(不包括结束字符'\0'),然后减去1,将结果赋给right。这是为了从字符串的最后一个字符开始替换。
  10. while (left<=right): 创建一个循环,只要left小于等于right,循环就会继续执行。
  11. arr2[right] = arr1[right];: 在arr2中,将与arr1中相同索引的字符替换为arr1中的字符。这实际上是将arr1中的字符逐个复制到arr2中。
  12. arr2[left] = arr1[left];: 同样,在arr2中,将与arr1中相同索引的字符替换为arr1中的字符。
  13. right --;: 将right减1,这样下一次循环时,就会从arr1的下一个字符开始复制。
  14. left ++;: 将left加1,这样下一次循环时,就会将下一个字符复制到arr2的下一个位置。
  15. Sleep(1000);: 暂停程序执行1秒钟。
  16. system("cls");: 清除控制台屏幕。
  17. printf("%s\n", arr2);: 打印出arr2的内容,即逐渐形成的字符串"Hello World!"。
  18. return 0;: 程序正常结束,返回0表示程序成功执行。

总的来说,这个程序通过逐渐将"Hello World!"的字符显示在屏幕上,实现了类似打字机的效果。

  • 首先,先通过ai来通读下这个代码

windows.h

  • 为了实现上面代码中,Sleep(1000)的效果,需要声明此头文件。

stdlib.h

  • 在代码中,为了到达清屏效果,需要使用system("cls")来实现。因此如果想要使用system("cls"),就需要调用stdlib.h头部文件。

string.h

  • 在之前的篇章里已经介绍了这个头部文件,但不妨再次强调。若要使用数组,那strlen肯定需要大量使用,使用strlen这个函数就需要声明string头部文件。
#include <stdio.h>
#include <string.h>
int main(void) {

	char password[20] = { 0 };

	int time = 0;

	while (1)
	{
		if (time == 3) {
			printf("NOW IS QUIT...");
			break;
		}
		printf("PASSWORD:");

		scanf_s("%20s",&password,20);

		getchar();




		if (strcmp(password, "12345678") == 0) {

			printf("OH!YES!");

			break;

		}

		time++;


	}




	getchar();

	return 0;
}
  • 在这个程序中,strcmp也是sting.h头文件声明之后才能使用的,strcmp用与比较两个字符串的关系。在==符号之后的数字有三种,零:意为这比较的字符串相等,复数:被比较的字符串小于比较的字符串,正数:被比较的字符串大于比较的字符串。

scanf_s

  • 作用与scanf一致,都是读取输入的值。但是在Visual Studio中,scanf是无法正常使用的,因为它被替换成了scanf_s或更多其它写法,功能是一样的,但是相对与scanf,scanf_s更加安全,比如可以设置最大的读取范围,防止值溢出导致其他错误。
  • 若是想使用scanf,就需要在主函数之外写上#define _CRT_SECURE_NO_WARNINGS,当然在Visual Studio中也可以写在不同的源文件中,效果是一样的。


标签:文件,头部,字符,语法,arr2,arr1,字符串,include,left
From: https://blog.51cto.com/u_16212408/7062120

相关文章

  • WPF自定义控件实战:自制上传文件显示进度按钮
    自定义控件在WPF开发中是很常见的,有时候某些控件需要契合业务或者美化统一样式,这时候就需要对控件做出一些改造。 目录按钮设置圆角按钮上传文件相关定义测试代码 话不多说直接看效果默认效果:上传效果:按钮设置圆角因为按钮本身没有CornerRadius属性,所......
  • lambda表达式(jdk8才开始出现的语法)
    1、是为了简化某些场景下匿名对象的繁琐。其中有一种函数式编程(强调做什么,而不是强调谁去做)的思想。语法格式:(形参列表)->(固定格式){​ 方法体;}测试代码如下所示:importjava.util.Arrays;importjava.util.Comparator;publicclassTest{publicstaticvoidmain(S......
  • SQL语法(待完善)
    SQLStructuredQueryLanguage结构化查询语言定义了操作关系性数据库的规则存在一定的版本之间的差异1.1SQL概述SQL语句以单行,多行书写,以分号结尾不区分大小写关键字建议大写--单行注释#注释内容/*多行注释*/结构化查询语言SQL是用于访问和处理数......
  • Mybatis如何添加映射接口和映射文件?
    Mybatis是一种半ORM框架,需要我们手动编写SQL语句。在启动时,它会将SQL语句等信息读取到内存中,便于操作数据库时进行参数解析、执行SQL和结果封装。使用过Mybatis的都知道,它有两种方式编写SQL语句:xml映射文件映射接口方法上的注解在启动Mybatis时,可以通过Configuration的addM......
  • C语言学习笔记(十)文件操作
    十、文件操作程序文件数据文件本章学习的是数据文件文件名包含三部分:文件路径+文件名主干+文件后缀c:\code\test.php文件类型文本文件:肉眼就能看懂二进制文件:数据在内存中以二进制的形式存储,若不加转换就输出到外存,就是二进制文件字符一律以ASCII码形式存......
  • 文件映射缺页中断和匿名页面缺页中断的区别
    文件映射缺页中断和匿名页面缺页中断主要区别在于缺页时的处理方式和触发原因。对于文件映射缺页中断,当程序需要访问文件映射的某个页面但该页面尚未调入内存时,就会触发文件映射缺页中断。这时,操作系统会根据文件映射的约定从磁盘加载相应的文件内容到内存中,然后更新页表,使得程序......
  • exe压缩文件解压后自动运行某一文件,如vbs、cmd、bat
    支持sfx自解压功能的压缩软件一般可以实现标题所示需求,推荐Bandizip(标准版即可),下载安装就是标准版:http://www.bandisoft.com/bandizip/以解压MySoft.exe后自动执行pre_install.vbs为例:1、全选下图文件后,鼠标右键——添加到压缩文件(Bandzip) 2、自解压设置,填写完毕后点击“开......
  • 硬件管理平台-硬件网关-插件模块-配置文件
    硬件管理平台-硬件网关-插件模块-配置文件上一篇仅仅将反射的基础模块进行了添加,不过还有很重要的一个配置文件还未进行添加,本文将讲述ini配置文件的添加方式何谓配置文件例如在HardwareGatewayService项目中读取App.config文件或log4net读取config.xml文件相同,本项目也需要添......
  • 复习 - Java 基本语法
    前言有两年没有怎么使用过Java了,重新复习一下基础的内容,特此记录。视频课程为B站尚硅谷宋红康java基础视频。关键字和保留字关键字定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)特点:关键字中的所有字母都为小写保留字定义:现有的Java版本尚未使用,但以后版本......
  • shell 判断文件新旧
    一、-nt判断file1是否比file2新["/data/file1"-nt"/data/file2"]二、-ot判断file1是否比file2旧["/data/file1"-ot"/data/file2"]参考:https://www.imooc.com/article/325970......