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) 是这个表的主键。 每一…

大锅菜机器人_炒菜机或者炒菜机器人有好用的吗 - 玩主论坛

好像公司还在,出新型号了。智能烹饪机炒菜视频:http://videotudoucom/v/XMTk3MDkwNDU5Nghtml智能烹饪机将主(菜、肉、鱼……)副料一次性投入,选定菜系,轻触按钮,一般家常菜肴仅三分钟即可出锅食用。本机具有自动翻炒功…

高效开发--crm开发有悟

今天我计划许久的回访单功能模块,还是没有实现,没有搞定。心中很是苦闷啊!!!原因:自己想去吧。以后怎么做:什么也是纸老虎,程序研发太简单,只要弄清了需求,其…

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

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

href 带参数 打开exe_js调用winform程序(带参数)

我们会发现,我们点击迅雷下载的时候 网页可以调用应用程序,而且连接会传入迅雷,这个是怎么做到的呢?原理: 先注册表中添加软件的具体信息,然后通过 href 可以直接调用1.写入注册表信息,注册,如果不需要参数 只要第一个HKEY_CLASSES_ROOT\test 段落Windows Registry Editor Ve…

c语言variant是什么变量,介绍一些常用数据类型的使用。先定义一些常见类型变量借以.doc...

介绍一些常用数据类型的使用。先定义一些常见类型变量借以说明int i 100;long l 2001;float f300.2;double d12345.119;char username[]"张三";char temp[200];char *buf;CString str;_variant_t v1;_bstr_t v2;一、其它数据类型转换为字符串短整型(int)itoa(i,tem…

What code you will get when you create a wcf library

创建wcf服务库的时候,系统自动生成的代码 // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。[ServiceContract]public interface IService1{[OperationContract]string GetData(int value);[OperationC…

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

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

结巴分词有前空格_jieba英文空格分词问题

1.对于关键词存在空格或者特殊符号的情况下,jieba无法分出该词2.在github上找到了一个解决方案,修改jieba源码__init__.py免费分享,造损免责。打开默认词典(根目录)或自定义词典,把所有用来间隔词频和词性的空格间隔符改成(选用是…

linux socket 面试题,面试题

1、网络TCP/IP协议2、三层路由架构,搭建局域网3、自动化测试工具robotframework的使用,怎么管理测试脚本4、shell脚本可用过?怎么替换一个文本中指定的内容?5、python的多线程怎么使用的?正则表达式中serach和match的区…

Core Location :⽤用于地理定位

Core Location :⽤用于地理定位 在移动互联⽹网时代,移动app能解决⽤用户的很多⽣生活琐事,⽐比如 导航:去任意陌⽣生的地⽅方 周边:找餐馆、找酒店、找银⾏行、找电影院 在上述应⽤用中,都⽤用到了地图和定位功能,在iOS开发中,要想加⼊入这2⼤大功 能,必须基于2个框架进⾏…

LeetCode MySQL 1587. 银行账户概要 II

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

取多补少C语言,leetcode题目: 数字的补数 的C语言解法

题目链接题目内容给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。注意:给定的整数保证在32位带符号整数的范围内。你可以假定二进制数不包含前导零位。示例 1:输入: 5输出: 2解释: 5的二进制表示为101(没有前导零位),其补数为010。所以你需…

wpf mvvm MenuItem的Command事件

这是一个事件的辅助类,可以通过它实现MenuItem的Command事件 public class MyCommands : Freezable, ICommand, ICommandSource{public MyCommands() {}public static readonly DependencyProperty CommandParameterProperty DependencyProperty.Register("Com…

python写字板_pywinauto简单操作写字板的例子

前段时间写了做web程序界面自动化的简单例子,今天写一下windows gui程序界面自动化测例子吧。def openwordpad():app application.Application()wordpadapp.start(r"C:\Program Files\Windows NT\Accessories\wordpad.exe")wordpad.wordpadclass.RICHEDI…

c语言 spawn函数,我在electron程序中spawn了一个C语言程序作为子进程,我该如何与这个子进程通信?...

C语言的代码为:#include int main(){int i 0;scanf("%d", &i);printf("%d\n", i);scanf("%d", &i);printf("%d\n", i);return 0;}我用sub_process.stdin.write("1\n");后,它不会立即输出&am…

LeetCode MySQL 1667. 修复表中的名字

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

junit跳过datasource_maven – spring集成测试无法加载上下文“另一个资源已存在,名称为dataSource”...

我正在使用spring-boot 1.4.3中引入的测试注释进行集成测试RunWith(SpringRunner.class)SpringBootTestpublic class MyServiceIT { }根据documentation,测试上下文被缓存并重用以加速集成测试.这种行为是我想要的,因为它需要大量的时间来初始化应用程序上下文.我的故障安全插件…

7.Reverse Integer (INT; Overflow)

Reverse digits of an integer. Example1: x 123, return 321Example2: x -123, return -321 思路:要注意溢出。用以下做法,会溢出。 class Solution { public:int reverse(int x) {int ret 0;while(x){ret ret * 10 x%10;x / 10;}return ret;} };…

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…