C语言学习笔记<1>

devtools/2024/10/18 16:55:30/

1.

EOF(End of File)是文件结束标志,用于表示文件已经读取完毕。在C语言中,可以通过判断是否读取到EOF来判断文件是否读取完毕。

以下是一个简单的C语言代码示例,用于读取一个文本文件并输出其内容:

// 使用fopen函数打开一个名为example.txt的文件
// 然后使用fgetc函数逐个字符地读取文件内容
// 当fgetc函数返回EOF时,表示文件已经读取完毕,此时退出循环
// 最后,使用fclose函数关闭文件
#include <stdio.h>int main() {FILE *file;char ch;file = fopen("example.txt", "r"); // 打开文件if (file == NULL) {printf("无法打开文件");return 1;}while ((ch = fgetc(file)) != EOF) { // 逐个字符读取文件内容putchar(ch); // 输出字符}fclose(file); // 关闭文件return 0;
}

2.单步执行

#include <Windows.h>Sleep(1000);

#include <Windows.h> 是C/C++中引入Windows API头文件的语句,它包含了许多用于操作Windows操作系统的函数和数据类型。

Sleep(1000); 是一个Windows API函数,用于让程序暂停执行一段时间。在这个例子中,Sleep(1000) 表示程序将暂停执行1秒钟(1000毫秒)。这个函数通常用于控制程序的执行速度或者在需要等待某个操作完成时让程序暂停。

3.system执行系统操作
<1>清空屏幕
#include <stdlib.h>
system("cls");(system是一个库函数,可以执行系统命令)
<2>关机操作
#include <stdlib.h>
system("shutdown -s -t 60");

4.比较两个字符串是否相等

strcmp() 是C语言中的一个字符串比较函数,用于比较两个字符串的大小。头文件为<string.h>。它的原型为:

int strcmp(const char *str1, const char *str2);

参数 str1 和 str2 分别表示要比较的两个字符串。函数返回值为整数,如果 str1 小于 str2,则返回负数;如果 str1 等于 str2,则返回0;如果 str1 大于 str2,则返回正数。

简单示例:

#include <stdio.h>
#include <string.h>
int main() {char str1[] = "Hello";char str2[] = "World";char str3[] = "Hello";if (strcmp(str1, str2) == 0) {printf("str1 and str2 are equal");}else {printf("str1 and str2 are not equal");}if (strcmp(str1, str3) == 0) {printf("str1 and str3 are equal");}else {printf("str1 and str3 are not equal");}return 0;
}

5.生成随机数

#include <stdlib.h> //srand的头文件
#include <time.h> //time的头文件srand((unsigned int)time(NULL)); //NULL是空指针
int num = rand();//num是生成的随机数

6.cmd关机

shutdown -s -t 60六十秒后关机
shutdown -a取消关机

7.

在C语言中,static关键字有三个主要的用途:

  1. 修饰局部变量:当一个局部变量被声明为static时,它的生命周期会在整个程序运行期间持续存在,而不是在函数调用结束后销毁。这意味着即使函数返回,该变量的值也会保留下来,下次调用该函数时,它将保持上次的值。

  2. 修饰全局变量:当一个全局变量被声明为static时,它的作用域将被限制在声明它的源文件中。这意味着其他源文件不能访问这个变量。这可以防止命名冲突。

  3. 修饰函数:当一个函数被声明为static时,它的作用域也将被限制在声明它的源文件中。这也有助于防止命名冲突。

代码示例:

#include <stdio.h>// 使用static修饰全局变量
static int global_var = 0;void func() {// 使用static修饰局部变量static int local_var = 0;local_var++;global_var++;printf("local_var: %d, global_var: %d\n", local_var, global_var);
}int main() {func();func();return 0;
}

8.

extern关键字用于声明一个变量或函数,表示它的定义在其他地方。这样,多个源文件可以共享同一个变量或函数。

当一个变量或函数被声明为extern时,编译器会在链接阶段查找其定义。如果找不到定义,就会报错。

下面是一个简单的示例:

file1.c:

#include <stdio.h>int global_var = 10; // 全局变量void print_global_var() {printf("global_var: %d
", global_var);
}

file2.c:

#include <stdio.h>extern int global_var; // 声明全局变量
extern void print_global_var(); // 声明函数int main() {printf("global_var: %d
", global_var);print_global_var();return 0;
}

编译和链接:

gcc file1.c file2.c -o program // 编译和链接这两个源文件,得到了一个可执行程序

输出:

global_var: 10
global_var: 10

9.

结构体是一种复合数据类型,它可以包含不同类型的数据成员。结构体可以用来表示现实世界中的对象,例如学生、员工等。

定义结构体的语法如下:

struct 结构体名 {数据类型1 成员名1;数据类型2 成员名2;...
};
// 例如,我们可以定义一个表示学生信息的结构体:
struct Student {char name[20]; // 姓名int age;       // 年龄float score;   // 成绩
};// 使用结构体时,需要先声明一个结构体变量,然后可以通过点运算符访问其成员。例如:
struct Student stu;
stu.name = "张三";
stu.age = 18;
stu.score = 90.5;// 结构体指针可以用来指向结构体变量的地址。通过结构体指针可以访问结构体变量的成员。例如:
struct Student *p = &stu;
strcpy(p->name, "李四");
p->age = 20;
p->score = 80.5;// 结构体作为函数参数和返回值也是常见的用法。例如,我们可以定义一个函数来计算学生的平均成绩:
float average_score(struct Student *students, int num) {float sum = 0;for (int i = 0; i < num; i++) {sum += students[i].score;}return sum / num;
}


http://www.ppmy.cn/devtools/6638.html

相关文章

vue3第二十节(新增编译宏defineModel)

为什么会需要使用defineModel() 注意&#xff1a;defineModel() 需要在3.4及以上版本才可使用&#xff1b; 组件之间通讯&#xff0c;通过 props 和 emits 进行通讯,是单向数据流&#xff0c;比如&#xff1a;props是自上而下的&#xff08;父组件数据修改导致子组件更新&…

网络协议——IS-IS协议详解

1. IS-IS是什么 IS-IS是一种基于链路状态并使用最短路径优先算法进行路由计算的一种IGP协议。IS-IS属于内部网关协议&#xff0c;用于自治系统内部。IS-IS是一种链路状态协议&#xff0c;使用最短路径优先算法进行路由计算。 2. 应用场景&#xff08;园区网和骨干网&#xff0…

OSPF的P2P和Broadcast

OSPF为什么会有P2P和BROADCAST两种类型 OSPF&#xff08;开放最短路径优先&#xff09;协议中存在P2P&#xff08;点对点&#xff09;和BROADCAST&#xff08;广播多路访问&#xff09;两种网络类型&#xff0c;主要是为了适应不同类型的网络环境和需求。具体分析如下&#xf…

【Python_PySide6学习笔记(三十六)】基于QGroupBox和QScrollArea实现带有滚动条的QGroupBox(分组框)

基于QGroupBox和QScrollArea实现带有滚动条的QGroupBox分组框 基于QGroupBox和QScrollArea实现带有滚动条的QGroupBox(分组框)前言正文1、创建QGroupBox并创建其内部布局2、创建QScrollArea并将QGroupBox设置为其内容3、将QScrollArea添加到主窗口的中心部件的布局中4、完整代码…

37、Tomato(VulnHub)

Tomato 一、nmap 2211是ssh的端口&#xff0c;21的ftp也不是弱密码 二、web渗透 随便看看 目录爆破 /seclists/Discovery/Web-Content/common.txt /antibot_image/antibots/readme.txt 发现该站点存在反爬机制 /antibot_image/antibots/info.php 提示我们该网页存在个参数 GET&…

k8s调度场景

15个KUBERNETES调度情景实用指南 Kubernetes调度是确保集群中的Pod在适当节点上运行的关键组件。通过灵活配置调度策略&#xff0c;可以提高资源利用率、负载平衡和高可用性。 在本文中&#xff0c;我们将深入探讨一些实际的Kubernetes调度场景&#xff0c;并提供相应的配置示…

D3-八数码

D3-八数码 题目描述解题思路代码如下 题目描述 解题思路 本题若直接在3*3网格中思考较为困难&#xff0c;可以转换为一维的字符串&#xff0c;在一维字符串中考虑较为简单&#xff0c;要注意本题中两个字符交换位置时只能是x和另外字符交换&#xff0c;本题另外一个难点在于如何…

图论学习总结

目录 图论学习总结前言一、基础知识图的存储图的遍历 二、最短路多源最短路 F l o y d Floyd Floyd​ 算法例题及变形 e g 1 &#xff1a; S o r t i n g I t A l l O u t eg1&#xff1a;Sorting\ It\ All\ Out eg1&#xff1a;Sorting It All Out ( 蓝书例题&#xff0c;传递…