所以,我正在尝试添加和删除数组中的字符。我有一个add_to_array函数,工作正常。它准确地打印出它应该是什么。但是,我似乎无法从数组的末尾删除一个字符。我尝试的代码是:
void delete_array(char *q, char f)
{
char *blah = q;
while(*blah != '\0')
{
blah--;
}
*blah = f;
blah--;
*blah = '\0';
}
我的add_to_array的代码完全相同,除非它是blah ++,我认为删除一个字符恰恰相反。它编译,但它打印“分段故障(核心转储)”作为输出。我哪里错了?感谢您提出任何建议/帮助。
答案 0 :(得分:1)
#include <stdio.h>
void delete_array(char *str, char ch){
//To remove the specified character from a string
char *to, *from;
for(to = from = str; *from != '\0'; ++from){
if(*from != ch)
*to++ = *from;
}
*to = '\0';
}
int main(void){
char str[] = "application";
delete_array(str, 'p');
printf("%s\n", str);//alication
return 0;
}
如果删除特定位置的字符,则需要在参数中包含位置。
#include <stdio.h>
void delete_array(char *str, size_t pos){
//Delete the character of the position pos.
char *p;
for(p = str + pos; *p = p[1] ; ++p)
;
}
int main(void){
char str[] = "application";
delete_array(str, 3);
printf("%s\n", str);//appication
return 0;
}
答案 1 :(得分:-1)
以下代码显示了如何删除字符串中的字符。
void delete_array(char *q, char f)
{
char *blah = q;
char *temp;
while(*blah != '\0')
{
if(*blah == f){
while(*blah != '\0'){
temp = blah;
temp++;
*blah = *temp;
blah++;
}
break;
}
blah++;
}
}