C指针写入错误
在“定位”中,将文件名分配给类memeber char*filepath,如下所示:C指针写入错误,c,pointers,C,Pointers,在“定位”中,将文件名分配给类memeber char*filepath,如下所示: char * filename= strdup("try1.mat"); writter.locate(filename); 可能不会做你想做的事。使用: if(1 < variable < 2) 编辑 如果1
char * filename= strdup("try1.mat");
writter.locate(filename);
可能不会做你想做的事。使用:
if(1 < variable < 2)
编辑
如果1<变量<2的计算结果如下:
if(1 < variable && variable < 2)
*我认为这不是标准要求的,所以不要依赖它。这:
char * filename= strdup("try1.mat");
writter.locate(filename);
可能不会做你想做的事。使用:
if(1 < variable < 2)
编辑
如果1<变量<2的计算结果如下:
if(1 < variable && variable < 2)
*我认为这不是标准所要求的,所以不要依赖它。我猜您是在向函数传递字符串文字:
if( (1 < variable) < 2)
if( (true) < 2)
//given true is often* assigned a value of 1 this will always be true and
if( (false) < 2)
//false is always zero this will also be true
无法修改字符串文字
但是,您可以传入一个由文本初始化的数组:
fileNameProcess( "myfile.dat");
与任何字符串处理例程一样,在修改传入的字符串时,请注意使其正确终止,并且不要写入超过缓冲区结尾的内容。我猜您是在向函数传入字符串文字:
if( (1 < variable) < 2)
if( (true) < 2)
//given true is often* assigned a value of 1 this will always be true and
if( (false) < 2)
//false is always zero this will also be true
无法修改字符串文字
但是,您可以传入一个由文本初始化的数组:
fileNameProcess( "myfile.dat");
与任何字符串处理例程一样,在修改传入的字符串时,请注意使其正确终止,并且不要写入超过缓冲区结尾的内容。最可能的情况是,您提供了一个常量文本字符串作为输入:
char fname[] = "myfile.dat";
fileNameProcess( fname);
如果是这种情况,请尝试:
char * str = "test";
fileNameProcess(str);
最有可能的情况是,您提供了一个常量文字字符串作为输入:
char fname[] = "myfile.dat";
fileNameProcess( fname);
如果是这种情况,请尝试:
char * str = "test";
fileNameProcess(str);
如果要在inputName中传递常量字符串,则将尝试修改只读内存。执行此操作时,您还应该看到编译器警告。还有一个小问题:为什么要使用memset来修改单个字符-为什么不只是名称[i]=''?您也可能正在传递无效指针。这是一个const char*,还是它是如何创建的?您的代码还缺少其他一些细节。首先,你为什么要做这些令人困惑的事情?不需要你的临时工。在任何地方都只使用名称[i]。使用memset在字符串中指定一个字符是。。。按照Paul的指示做。如果您在inputName中传递一个常量字符串,那么您将尝试修改只读内存。执行此操作时,您还应该看到编译器警告。还有一个小问题:为什么要使用memset来修改单个字符-为什么不只是名称[i]=''?您也可能正在传递无效指针。这是一个const char*,还是它是如何创建的?您的代码还缺少其他一些细节。首先,你为什么要做这些令人困惑的事情?不需要你的临时工。在任何地方都只使用名称[i]。使用memset在字符串中指定一个字符是。。。按照Paul的指示去做。你能解释为什么if1