[英]Stripping blank spaces and newlines from strings in C
I have some input like this: 我有一些这样的输入:
" aaaaa bbb \n cccccc\n ddddd \neeee "
And I need to sanitize it like this: 我需要像这样对它进行消毒:
"aaaaa bbb cccccc ddddd neeee"
Basically: 基本上:
Is there any easy way to do this or I'll have to process the string, char by char and copy the appropriate chars to a different variable? 有什么简单的方法可以执行此操作,否则我将必须逐个字符处理字符串并将相应的字符复制到其他变量中?
Assuming you cannot modify string in place, 假设您无法就地修改字符串,
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);
You could use strtok to lexically tokenize the string, delimit with " \\r\\n\\t". 您可以使用strtok词汇化字符串化字符串,并用“ \\ r \\ n \\ t”分隔。 This will make your job easier.
这将使您的工作更加轻松。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.