我有这样的输入:
" aaaaa bbb \n cccccc\n ddddd \neeee "
我需要像这样清理它:
"aaaaa bbb cccccc ddddd neeee"
基本上:
- 去掉字符串开头和结尾的所有空格
- 删除所有新行
- 当有多个空格时去除所有空格,但始终在单词之间保留一个空格
有什么简单的方法可以做到这一点,或者我必须逐个字符地处理字符串并将适当的字符复制到不同的变量?
最佳答案
假设您不能就地修改字符串,
void splcpy(char *s, char *m){ //s is the unmodified string
int word = -1; //keeps track what was stored in last loop
while(*s){ //until it ends
if(!isspace(*s)){
if(word==0) *m++ = ' '; //if last char was space, add space
*m++ = *s++;
word = 1;
}
else{
if(word == 1) word = 0; //if last char was !space
while(isspace(*s++)); //consume all space until end
}
}
*m = '\0'; //end the string nicely
}
char *input = " aaaaa bbb \n cccccc\n ddddd \neeee ";
char *modified = malloc(sizeof(char) * strlen(input));
splcpy(input, modified);
关于c - 从 C 中的字符串中去除空格和换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2527698/