让我说我有char * string。现在我想确保之前没有任何事情。我该怎么检查?这是我的方法,但它似乎不起作用。
char * str = "test";
checker(str);
------------------------------------------------
int checker(char * string){
char *idx = string;
idx--;
if(*idx != '\0'){ //there should be no char before t
return 1;
}
我试过了' \ n'和' \ 0'。
答案 0 :(得分:4)
无法检查传递给函数的指针是否指向第一个元素。如果在分配给指针的存储区域之前将指针递减到位置,则调用未定义的行为。
递减的指针可能最终指向一个完全不同的变量,而不是传递给函数的变量或一些具有不可预测结果的未初始化的内存。指针甚至可能指向分配给您的进程的内存之外,从而导致崩溃。
未定义的行为甚至可能导致您的程序按预期工作多年,直到它以神秘的方式开始失败,有时在代码的完全不相关的部分。
答案 1 :(得分:0)
正如你所说,t
之前应该没有字符,checker()
函数中的只检查发送字符串的第一个元素是否为t
。强>
int checker(char* string)
{
if(string[0]=='t')
return 1;
return 0;
}