如何在C中使用strtok删除char数组中的最后一个字符串?
我有一个函数接受一些值作为 char array[] 参数。
这些值用分号 (';'
) 分隔。
例如: "hello;dear;John"
所以我试图找到一种方法,使用 strtok
删除最后一个字符串,即 "John "
在最后一个分号之后。
int remove(char lastName[]){
}
*更具体地说,
我创建了这个函数,它删除由分号分隔的值:
int remove(char variable_Name[]){
char *value_toRemove = getenv(variable_Name);
char last_semicolon[] = ";";
char *result = NULL;
result = strtok( value_toRemove, last_semicolon );
while( result != NULL ) {
result = strtok( NULL, last_semicolon );
}
return NULL;
}
但是该函数在找到分号后会删除所有内容。
I have a function which accepts some values as char array[]
parameters.
These values are separated with semicolons (';'
).
For example: "hello;dear;John"
So I'm trying to figure out a way by using strtok
to delete the last string, which is "John"
after the last semicolon.
int remove(char lastName[]){
}
*To be more specific
I have created this function which removes values separated by semicolons:
int remove(char variable_Name[]){
char *value_toRemove = getenv(variable_Name);
char last_semicolon[] = ";";
char *result = NULL;
result = strtok( value_toRemove, last_semicolon );
while( result != NULL ) {
result = strtok( NULL, last_semicolon );
}
return NULL;
}
But the function deletes everything after it finds a semicolon.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
strrchr
将查找该字符的最后一次出现。因此,如果您不介意修改原始字符串,那么它应该像
手册页一样简单 此处< /a>
strrchr
will find the last occurance of the character.Sor if you don't mind modifyint the original string then it should be as simple as
Man Page here
编辑:作为对您的评论的回应,它确实有效。这就是我的做法,我已经包含了整个程序来显示输出示例:
输出:
您也可以实时尝试 这里。
EDIT: In response to your comment, it does work. This is how I'd do it and I've included the whole program to show an example of the output:
Output:
You can also try it live here.