c语言程序做成可执行文件,windows环境下C程序生成可执行文件

windows环境下,编写C程序,生成.exe,用于操作某个文件。

包含三部分:搭建环境、程序实现、程序分析。

1、搭建程序编写和编译环境

在windows下安装Git Bash(下载页面)。

安装完成后,可以在windows的任意文件夹下,空白处点击右键,选择“Git Bash here”启动Git Bash。

windows下的环境变量:

桌面-》鼠标右键单击我的电脑-》属性-》高级-》环境变量

将C:\MinGW\bin加入PATH

将C:\MinGW\include加入INCLUDE

将C:\MinGW\lib加入LIB

Git Bash本身带了C语言编写程序vim,但是没有gcc,所以参考这里,在Git Bash中安装编译工具gcc。大致安装选项如下:

a3c1f3109658593f3bf04f2233e4ddab.png

2d2837c087d1dd91b1313aaf54d296f5.png

在Git Bash中,查看是否有vim和gcc。

50d12f60a0a88ac588deed0feba0155b.png

2、读写文件的程序实现

1.在指定的文件夹中,空白处点击右键,选择“Git Bash Here”,比如我在桌面创建的“新建文件夹”:

f3849ca43460d18df90cda9a8879bafc.png

2.创建并打开一个.c文件

vim 1.c

3.编写程序

#include #include #define FILENAME "./2.txt"

#define WRITEWORDS "These words are written in file.\n这是新加入的文件内容\n"

int main(){

FILE *fd = NULL; //文件描述符

size_t Nmemb = 1; //以单次写入某个长度的方式写入的个数

printf("test."); //测试结果打印

fd = fopen(FILENAME, "a"); //打开一个名为FILENAME的文件,如果该文件夹没有则创建,权限为可读可写。

if(NULL == fd){ //判断是否打开成功

perror("open");

return -1;

}

fwrite(WRITEWORDS, sizeof(WRITEWORDS), Nmemb, fd); //往文件写入WRITEWORDS字符串,不覆盖原文内容

fclose(fd); //关闭文件

fd = NULL; //清空指针

while(1);

}

4.编译程序,即可在当前文件夹下生成.exe文件。

gcc 1.c

3211df29d1412aac9e556ee906ab553d.png

3.程序分析

程序实现里面已经有注释,此处说明一下如何获取一些函数和查阅资料的方法。

1.头文件来源:

stdio.h

标准输入输出,使用printf,scanf等都需要它。

unistd.h

因为使用了文件操作函数,所以需要包含它。一般是在linux环境下(此处是ubuntu中),使用指令 man 3 fopen ,即可查看到fopen的定义和使用方法,里面有显示包含的头文件。

2.函数使用方法查询:

可以在linux下使用man手册进行查询

man 3 fopen

man 3 fwrite

man 3 fclose

e4bb4d9c3897a4898b51692355e350f5.png

也可以结合网上的中文说明。

4.编译

如果编译过程出现中文乱码,则在gcc编译后面加如下指令:

-fexec-charset=gbk

-finput-charset=gbk

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471792.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode MySQL 1890. 2020年最后一次登录(year)

文章目录1. 题目2. 解题1. 题目 表: Logins -------------------------- | 列名 | 类型 | -------------------------- | user_id | int | | time_stamp | datetime | --------------------------(user_id, time_stamp) 是这个表的主键。 每一…

LeetCode MySQL 1873. 计算特殊奖金(case when then else end)

文章目录1. 题目2. 解题1. 题目 表: Employees ---------------------- | 列名 | 类型 | ---------------------- | employee_id | int | | name | varchar | | salary | int | ----------------------employee_id 是这个表的主键。 此表的每…

LeetCode 1868. 两个行程编码数组的积(双指针)

文章目录1. 题目2. 解题2.1 模拟超时2.2 优化1. 题目 行程编码(Run-length encoding)是一种压缩算法,能让一个含有许多段连续重复数字的整数类型数组 nums 以一个(通常更小的)二维数组 encoded 表示。 每个 encoded[…

LeetCode MySQL 1587. 银行账户概要 II

文章目录1. 题目2. 解题1. 题目 表: Users ----------------------- | Column Name | Type | ----------------------- | account | int | | name | varchar | -----------------------account 是该表的主键. 表中的每一行包含银行里中每一个用户的账号…

LeetCode MySQL 1667. 修复表中的名字

文章目录1. 题目2. 解题1. 题目 表: Users ------------------------- | Column Name | Type | ------------------------- | user_id | int | | name | varchar | -------------------------user_id 是该表的主键。 该表包含用户的 I…

c语言汇编混合编程写一个乘法,求通过C语言实现矩阵的加、减及乘法。要自己写的,不要复制过来...

满意答案eevfikx22013.11.28采纳率:53% 等级:13已帮助:8891人#include using namespace std;int main(){int am3,bm3,an3,bn3;int a[am][an];int b[bm][bn];for(int i0;i{for(int j0;j{a[i][j]i*amj;}}for(int i0;i{for(int j0;j{b[i][j]i…

LeetCode MySQL 1821. 寻找今年具有正收入的客户

文章目录1. 题目2. 解题1. 题目 表:Customers -------------------- | Column Name | Type | -------------------- | customer_id | int | | year | int | | revenue | int | --------------------(customer_id, year) 是这个表的主键。 这个表…

【Head First Java 读书笔记】(一)基本概念

Java的工作方式 你要做的事情就是会编写源代码 Java的程序结构 类存于源文件里面 方法存在类中 语句存于方法中 剖析类 当Java虚拟机启动执行时,它会寻找你在命令列中所指定的类,然后它会锁定像下面这样一个特定的方法: public static void main(String[…

oid 值 内存使用_[技术干货] zabbix监控项原型组合键值

自动发现中监控项原型使用多个值组合成一个新的键值。这里我们以华为RH5885V3的内存为例:我们先walk出要用来作为组合键值的值,我们称之为VALUE。而OID节点后面延伸出来的数值,例如.1、.2、.3这种,我们称之为INDEX。组合键值的关键…

LeetCode MySQL 1853. 转换日期格式(日期格式化)

文章目录1. 题目2. 解题1. 题目 表: Days ------------------- | Column Name | Type | ------------------- | day | date | -------------------day 是这个表的主键。 给定一个Days表,请你编写SQL查询语句,将Days表中的每一个日期转化为&qu…

自定义计算器 android,自定义公式计算app下载

自定义公式计算器是非常强大的一款计算器软件,可以帮助大家计算各种函数,还能够自定义公式进行保存,便于以后的计算;软件包含了科学计算器的所有功能,而且没有广告,非常的方便和强大,喜欢的朋友…

android 行布局选择器,『自定义View实战』—— 银行种类选择器

在工作中难免遇到自定义 View 的相关需求,本身这方面比较薄弱,因此做个记录,也是自己学习和成长的积累。自定义View实战前言年前的最后一个开发需求,将之前H5开卡界面转变成native。意思就是开卡这个需求做成Android原生的界面&am…

LeetCode 1971. Find if Path Exists in Graph(图的遍历)

文章目录1. 题目2. 解题1. 题目 There is a bi-directional graph with n vertices, where each vertex is labeled from 0 to n - 1 (inclusive). The edges in the graph are represented as a 2D integer array edges, where each edges[i] [ui, vi] denotes a bi-directi…

更新wpscan_wpscan扫描工具

简介WPScan是一个扫描WordPress漏洞的黑盒子扫描器,可以扫描出wordpress的版本,主题,插件,后台用户以及爆破后台用户密码等,Kali Linux默认自带了WPScan,也可以到Github项目仓库[1]中下载安装,其…

LeetCode 1974. 使用特殊打字机键入单词的最少时间

文章目录1. 题目2. 解题1. 题目 有一个特殊打字机,它由一个 圆盘 和一个 指针 组成, 圆盘上标有小写英文字母 ‘a’ 到 ‘z’。 只有 当指针指向某个字母时,它才能被键入。指针 初始时 指向字符 ‘a’ 。 每一秒钟,你可以执行以…

LeetCode 1979. 找出数组的最大公约数

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。 两个数的 最大公约数 是能够被两个数整除的最大正整数。 示例 1: 输入:nums [2,5,6,9,10] 输出:2 解释: nums 中…

BZOJ 1529: [POI2005]ska Piggy banks( 并查集 )

每一连通块砸开一个就可以拿到所有的钱, 所以用并查集求连通块数 -------------------------------------------------------------------#include<bits/stdc.h>#define rep(i, n) for(int i 0; i < n; i)#define clr(x, c) memset(x, c, sizeof(x))using namespace …

LeetCode 1980. 找出不同的二进制字符串

文章目录1. 题目2. 解题1. 题目 给你一个字符串数组 nums &#xff0c;该数组由 n 个 互不相同 的二进制字符串组成&#xff0c;且每个字符串长度都是 n 。 请你找出并返回一个长度为 n 且 没有出现 在 nums 中的二进制字符串。 如果存在多种答案&#xff0c;只需返回 任意一个…

#时间预测算法_改进的智慧交通系统出行时间预测算法

引用Chowdhury N K, Leung C K S. Improved travel time prediction algorithms for intelligent transportation systems[C]//International Conference on Knowledge-Based and Intelligent Information and Engineering Systems. Springer, Berlin, Heidelberg, 2011: 355-3…

Navicat for MySQL数据库管理工具

官网下载地址&#xff1a;http://www.navicat.com/download/navicat-for-mysql //如图所示成功建立连接 Host Nmae/Ip Adress:localhost为本地连接&#xff0c;建立远程数据库连接时设置对应ip即可。 1&#xff09;.新建表插入中文数据可以出现&#xff1a; 导致程序直接关闭&a…