永发信息网

C++中关于argc和argv的问题

答案:4  悬赏:60  手机版
解决时间 2021-04-19 06:50
  • 提问者网友:雾里闻花香
  • 2021-04-18 16:29
C++中关于argc和argv的问题
最佳答案
  • 五星知识达人网友:青灯有味
  • 2021-04-18 17:00
void fn(int y,char *z){ifstream infile(z[1])}
应该为
void fn(int y,char **z)
{
//最好在里面判断一下
if(y != 2)
{
std::cout<<"arguments wrong!"<return;
}
ifstream infile(z[1])
}追问换了你说的 char **z 还是提示 segmentation fault追答那就是你读文件的代码有错误了,追问不是 我不用argv[] 这东西的时候 我直接把路径卸载 ifstream infile中的时候是可以运行的。。ifstream infile("testConfig.txt") 的时候是好使的。。追答#include
#include

void fn(int y,char *z[])
{
if(y != 2)
{
std::cout<<"argument wrong!"< return;
}
std::ifstream infile(z[1]);
if(!infile){
std::cout<<"error"< return;
}
int k = 0;
char buff[1024] = {0};
while(!infile.eof())
{
memset(buff,0,1024);
infile.getline(buff,1024);
if(strstr(buff,"#"))
continue;
std::cout< }
}

int main(int argc,char *argv[]){
fn(argc,argv);
}
全部回答
  • 1楼网友:英雄的欲望
  • 2021-04-18 18:13
你的程序运行路径和代码的路径不是一个位置吧
  • 2楼网友:行雁书
  • 2021-04-18 18:01
你的指针指向可能错误了。
argv中的每一个元素都是char **型的而不是char*型的追问那应该怎么写呢。。追答吧你的代码贴出来啊追问void fn(int y,char *z[])
{ ifstream infile(z[1]);
if(!infile){
cout<<"error"<return;
}int k = 0;
while(!infile.eof())
{infile.getline(buff[k],256);
if(strstr(buff[k],"#"))
continue; k++; cout<int main(int argc,char *argv[]){
void fn(int argc,char *argv[]);
}
  • 3楼网友:西岸风
  • 2021-04-18 17:50
读取文件,应该指定文件的绝对路径,否则就会产生这样的错误,我之前也有过这个问题。
linux下的吧?
如果文件在tmp文件夹下
ifstream infile("testConfig.txt") 修改成
ifstream infile("//tmp//testConfig.txt") 这样的
就可以了追问不用 我程序和testConfig.txt文件是在一个目录下 直接在ifstream infile中写("testConfig.txt")就能读取 我的问题出现在如果 用argv参数的话就 程序就无法进行了追答这个应该跟你用argv没有关系,你试一下,修改成绝对路径,不管是不是在同一文件夹下,修改成绝对路径,尝试一下。我以前也是觉得这个无所谓,但是因为这个原因错了很多次。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯