我有一个用C编写的俄罗斯轮盘赌脚本。如果两个随机生成的数字相同,脚本将删除指定的文件。
人们建议我应该使用C17来使用<filesystem>
库,以便正确运行与文件相关的操作。如果条件匹配,删除操作将运行。if
块正确运行,但删除文件不会发生。
#include <iostream>
#include <cstdlib>
#include <stdio.h>
#include <filesystem>
//include filesystem and replace remove() with filesystem libs remove function
using namespace std;
namespace fs = std::filesystem;
int main(){
int minNumber = 1, maxNumber = 6;
int possibility,chamberNumber;
srand(time(0));
possibility = rand() % (maxNumber - minNumber + 1 ) + minNumber;
chamberNumber = rand() % (maxNumber - minNumber + 1 ) + minNumber;
cout << "First Number: " <<possibility<<endl<<"Second Number: " << chamberNumber<< endl;
if (possibility == chamberNumber){
std::filesystem::remove("C:\\Users\\mypath\\Desktop\\cppRoulette\\delete.txt");
cout << "You're Dead " <<possibility<< endl;
}
// else{
// cout << possibility << endl;
// }
return 0;
}
我使用下面这行代码来编译我的代码:
g++ -std=c++17 rulet.cpp -o output
下面是编译后输出的屏幕截图,注意"delete.txt"
仍然有效。
我用的是WSL Debian,因为我用的是VS代码,本地终端不能正常的与g一起工作。不过我可能更喜欢Linux的流畅性。
我正在寻找一种合适的和更简单的方法来处理文件,就像在Python中一样。我正在参加一个C速成班,所以我试图学习它,切换到Python是不可能的。
1条答案
按热度按时间ubbxdtey1#
您的文件路径错误。我刚刚通过将路径从
E:\Test\delete.txt
更改为/mnt/e/Test/delete.txt
,使您的代码在我的系统上工作。在WSL下,所有Windows驱动器(
C:
、E:
等)都安装在/mnt
目录下,位于与驱动器号(/mnt/c/
、/mnt/e/
等)匹配的子目录中。要转换Windows路径以在WSL中使用,您需要执行以下操作:1.将所有反斜杠(
\
)替换为正斜杠(/
)。1.删除驱动器号后面的冒号(
:
)。1.将驱动器号转换为小写。
1.将字符串
"/mnt/"
添加到路径前面。在此之后,您的程序工作,并将删除目标文件。