我想从“#-9”等字符串中删除字符“#”,并将其余字符转换为整数值。我知道如何将字符串转换为整数而不使用“#”,所以我尝试使用代码删除它
void delChar(char *str, int x) {
char *q;
q = str;
while(*q == *(q+1)) q++;
*q='\0';
}
但是它会终止字符串,那么我该如何解决这个问题。
最佳答案
这是完整的工作代码。如果您有任何不明白的地方,请告诉我。
#include<stdio.h>
#include<stdlib.h>
char* delChar(char *str, char replace_char)
{
char *newStr;
int i=0, * flag;
newStr= (char*)malloc(1*sizeof(char));
if (newStr == NULL)
{
printf("Out of memory ...!");
exit(-1);
}
while (*str != '\0' )
{
if (*str != replace_char)
{
newStr[i]= *str;
++i;
flag= realloc(newStr,i*sizeof(char));
if (flag == NULL)
{
printf("Out of memory ...!");
exit(-1);
}
}
str= str+1;
}
return newStr;
}
int main()
{
char *str = "#-#9#66#";
char* newStr;
newStr= delChar(str, '#');
printf("%d\n", atoi(newStr)); // use atoi() to convert string to integer
return 0;
}
输出:
-966
关于C 如何从字符串中删除一个字符并保留其余字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52788336/