我有一个功能:
char* rtrim(char* string, char junk)
{
char* original = string + strlen(string);
while(*--original == junk);
*(original + 1) = '\0';
return string;
}
我称之为:
colTok = rtrim(colTok,"%");
colTok是char *,其中包含字符串编号,如“80%”。我需要删除%。我相信我之前使用过这个功能但是现在它不起作用,因为当我调试并进入它时,所以垃圾是-49'Ď'而不是'%'。所以有什么问题?我做错了什么?
答案 0 :(得分:3)
colTok = rtrim(colTok,"%"); // "%" is a string
您需要传递单个字符
colTok = rtrim(colTok, '%');
我建议你时刻关注你的编译器警告;假设他们是错误的。
答案 1 :(得分:2)
问题是你将一个字符串而不是一个字符串传递给该函数。应该是:
colTok = rtrim(colTok, '%');
您传递的字符串"%"
,即char [],将其地址视为char。这就是垃圾的原因。
答案 2 :(得分:0)
这是我在便携式C99中的功能。
const char* C_Whitespaces = " \t\n\r\f\v";
char* rtrim(char* s)
{
char* r = s, * end;
size_t len = strlen(s) - 1;
for (end = s+len;
strstr(C_Whitespaces, r+len) && end != s;
end = s+len , *(r + (len--)) = 0);
return r;
}