[英]how to remove special character from the beginning and end of a string in c
[英]how to move char in a string from beginning to an end
正如标题所说,在我的程序中,我(在许多程序之后)获得了标记化的单词。 不幸的是,由于它们被反转,它们在一个单词的开头保留标点字符,例如。 ,驼鹿
如何移动,
从开始到结束 - >驼鹿,
到目前为止我已经尝试过了( ptr
是char *
):
temp = strdup(ptr);
temp = &ptr[0];
ptr[0] = ptr[1];
ptr[strlen(ptr)-1] = temp;
free(temp);
但这给了我错误:
赋值从整数中生成没有强制转换的指针
警告:赋值从指针生成整数而没有强制转换
如何解决?
像这样的东西:
void swap_last(char *str)
{
const size_t len = strlen(str);
if(len > 1)
{
const char first = str[0];
memmove(str, str + 1, len - 1);
str[len - 1] = first;
}
}
注意,上面假设str
有效。
通常,逗号应该是它自己的标记,因此在标记化后解析它会在第一个之后放置第二个标记化器。
最好的解决方案不仅仅是拆分空格,而是将逗号识别为自己的标记,这样你就可以测试逗号作为语法的一部分。
检查你的代码并推断它缺少类型,很难知道你的temp
变量的类型 - 因为在某些地方你正在使用它像char *
而在其他地方你正在使用它像char
。
我怀疑编译器错误是在行ptr[strlen(ptr)-1] = temp;
(因为我怀疑temp
是一个char *
),正确的解决方法是: ptr[strlen(ptr)-1] = *temp;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.