C中的rtrim(修剪字符串)

时间:2015-02-28 14:33:45

标签: c trim

我有一个功能:

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'Ď'而不是'%'。所以有什么问题?我做错了什么?

3 个答案:

答案 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;
}