c - C 中的 Trim 函数,用于原地修剪(不返回字符串)

标签 c string pointers trim

char testStr[] = "          trim this           ";
char** pTestStr = &testStr;
trim(pTestStr);

int trim(char** pStr)
{
 char* str = *pStr;
 while(isspace(*str)) {
  (*pStr)++;
  str++;
 }

 if(*str == 0) {
  return 0;
 }

 char *end = str + strlen(str) - 1;
 while(end > str && isspace(*end))
  end--;
 *(end+1) = 0;

 return 0;
}

最佳答案

你需要让 testStr 可写:

char testStr[] = "          trim this           ";

问题是 char *ptr = ...ptr 指向只读内存中的实际文字字符串。

通过使用 char testStr[] = ...,您正在分配一个数组并使用与文字字符串相同的内容初始化该数组。由于这是一个数组,因此它是可写的。

关于c - C 中的 Trim 函数,用于原地修剪(不返回字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3019490/

相关文章:

c - 读取管道 block ,直到在管道末端运行的程序终止 - Windows

c++ - C 和 C++ 静态链接 : just a copy?

string - 最多 n 个位置不同的字符串数?

c# - 如何检查字符串不包含字母和数字以外的任何字符?

c - 字符串 - 名字和姓氏按字母顺序排列,大写字母

c++ - 一个双指针可以用c++写成两种方式吗?

c - 为什么 uint16_t 在这里有所作为?

c - 由于头文件,编译C项目导致符号重复

java - 如何在java中使用mysql命令的条件制作按钮?

c - 将指针作为参数传递给 C 中的函数