无法打开源文件 ctype.h和.exe 进行写入

7 篇文章 0 订阅

以前在win7的时候遭遇过这个问题,版本是VS 2015,记得是需要手动添加附加包涵目录和链接包含库目录,所以算是轻车熟路吧!不过今天解决完无法打开源文件后却遭遇了exe进行写入的锁定了,索性看看能够发生些什么怪事,都一并记录下来。


文章原出处: https://blog.csdn.net/haigear/article/details/129625891

1、有可能是windows sdk不一致导致

在cmd模式下查看你的windows,再进入Visual studio installer中查看你的windows 10 SDK,版本是否一致,或者接近,可能这也是导致问题的原因。
在这里插入图片描述
在这里插入图片描述
检查并配置好,一般你在visual stuido installer中配置后,再进入VS 就会自动弹出一个对话框让你配置好你的windows SDK。
在这里插入图片描述
如果不是那就老办法,添加附加包涵目录和链接库

2、在c/c++ 的常规中添加附加包涵目录

整完上面的我们继续添加包涵目录,解决包文件找不到的问题,一般直接拷贝过来即可
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt
在这里插入图片描述

3、为链接器配置附加库目录

这个时候运行则会好很多了,只有一个lib没找到了
在这里插入图片描述

这个时候我们在链接器的常规下找到“附加库目录”,为其增加下面的话:一般来说都是这个目录。当然,你的win10版本或VS2022的小版本不同,目录的数字部分不同。
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\ucrt\x64
在这里插入图片描述
配置完上面的再次编译运行就畅通无阻了。

4 、遭遇“ .exe 进行写入”

这个时候是因为你的程序进入了运行锁定状态,解决起来说容易也容易说不容易也不容易。先说容易的情况,如果你的进程可以在任务管理器中找到,直接终止它即可(可惜我运气不好,没有在任务管理器中发现它的任何踪迹)。
如果找不到呢?那就重启机器,然后回来在项目的debug中目录中彻底清除这个目录。
请记住,仅仅重启VS是不够的!直接跑到debug中删除你会发现删除不了,那就是被锁定了。
在这里插入图片描述
重启完成后,回到项目的debug目录则可以正常删除了。重新编译,没问题了。

5、后话

我们一般都会安装几个版本的VS,或许是因为项目维护或者迁移的问题。为什么其他的版本好好的,单单在2022上面出现这样的问题呢?两个问题没有明白
1、为何单独发生在2022版:查看其他版本的VS并没特别对链接器包含库及c++的附件包含目录进行特别的配置,唯独在2022上发生。
2、为何大多数人不会遭遇这个问题:是windows 10的小版本不同还是VS2022的小版本不同,还是安装什么其他软件导致环境变化了?

明白的大佬望不吝赐教,留言告知,感激!

码字不易,转载注明出处:https://blog.csdn.net/haigear/article/details/129625891

最后:如果大家的vs没有什么珍贵的配置好了的参数和资源,卸载vs后重新安装是最直接解决上述问题的最简方案。以上方案都是在不得以的情况下才选择的。

从键盘输入一个长度不超过100个字符的字符串,然后做如下操作: (1)将字串中的小写字母转为大写,大写字母转为小写,而其它字符不作处理。(2)将字串输出保存到一个名为“ex801.txt”的文本文件中。注:文本文件ex801.txt应与源码文件ex801.c保存在同一个文件夹中。目前,已编写完成main函数,请用C++编程实现writeToFile函数,具体功能和要求如下所示。/* @Filename: ex801.c @Author: 鞠成东 @Version: 1.0 @Date: 2021-03-18 @Description: 文件字符读写 / #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc,char argv[]){ /(1)声明函数及变量/ int writeToFile(char str, char fileName, char mode); char str[100]; char fileName[] = “ex801.txt”; /(2)获取键盘输入字串/ fgets(str, 100, stdin);得到(str);将回车看作字串输入结束标志,字串中可以有空格 //scanf(“%s”, str);将空格看作字串输入结束标志,字串中不能有空格 /(3)将字串写入文件*/ int charNum = writeToFile(str, fileName, “w”);if(charNum < 0){ //printf(“write error”);//用于调试 return -1; } return 0;} /* * 函数名称:writeToFile * 函数功能:将字串写入文件 * 形式参数:char *str,一维字符数组(字符串)首地址 * 形式参数:char *fileName,待写入的文件路径及名称 * 形式参数:char *mode,文件使用方式 * 返 回 值:int型,若文件打开异常,返回 -1;否则返回写入到文件的字符数 */ int writeToFile(char *str, char *fileName, char *mode){ // 请编程实现本函数 } 其他说明:无 【源文件名】ex801.c 【输入形式】标准输入:从键盘任意输入不超过100个字符的字串 【输出形式】文件输出:将字串转换后输出到文件
05-24
6-2 *删除行末空白字符 分数 15 作者 李祥 单位 湖北经济学院 有少数初学者编程时,没有留意行末多余的空白字符,这不是好的编程习惯。现在请你编写一个函数,把初学者源程序文件中每行末尾多余的空白字符全都删去。 函数原型 // 删除行末空白字符 void Cut(FILE *src, FILE *dst); 说明:参数 src 和 dst 均为文件指针,其中:src 指示初学者的源程序文件,dst 指示整理后的源程序文件。 注: 源程序中所能输入的空白字符仅限于空格符 ' ' (<SP>) 和 制表符 '\t' (<HT>)。 最后一行末尾可能没有换行符。 每一行的长度不限。 在 Unix 或 Linux 系统下,源程序文件每行末尾为一个换行符 '\n' (<LF>),而在 Dos 或 Windows 系统下,源程序文件每行末尾为一个回车符 '\r' (<CR>) 和一个换行符 '\n' (<LF>)。 裁判程序 #include <stdio.h> #include <ctype.h> #include <string.h> // 删除行末空白字符 void Cut(FILE *src, FILE *dst); int main() { char sname[1024], dname[1024]; FILE *sfile, *dfile; gets(sname); gets(dname); sfile = fopen(sname, "rb"); if (!sfile) { printf("%s 无法打开!\n", sfile); } dfile = fopen(dname, "wb"); if (!dfile) { printf("%s 无法打开!\n", dfile); } if (sfile && dfile) { printf("正在整理..."); Cut(sfile, dfile); puts("整理完成!"); } if (sfile) { fclose(sfile); } if (dfile) { fclose(dfile); } return 0; } /* 你提交的代码将被嵌在这里 */
05-28
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

河西石头

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

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

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

打赏作者

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

抵扣说明:

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

余额充值