Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C指针写入错误_C_Pointers - Fatal编程技术网

C指针写入错误

C指针写入错误,c,pointers,C,Pointers,在“定位”中,将文件名分配给类memeber char*filepath,如下所示: char * filename= strdup("try1.mat"); writter.locate(filename); 可能不会做你想做的事。使用: if(1 < variable < 2) 编辑 如果1

在“定位”中,将文件名分配给类memeber char*filepath,如下所示:

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