从C语言中具有特殊字符的句子中删除额外空格
我有一句话:从C语言中具有特殊字符的句子中删除额外空格,c,string,pointers,c-strings,C,String,Pointers,C Strings,我有一句话: irmovq $5 , %r1 我想把它转换成: irmovq $5, %r1 也就是说,我想从这个字符串中删除额外的空格。 实现这种微调功能的最佳方法是什么 #include <ctype.h> #include <stdio.h> void remove_extra_spaces(char* str) { int i, x; for(i=x=0; str[i]; ++i) if(!isspace(str[i
irmovq $5 , %r1
我想把它转换成:
irmovq $5, %r1
也就是说,我想从这个字符串中删除额外的空格。 实现这种微调功能的最佳方法是什么
#include <ctype.h>
#include <stdio.h>
void remove_extra_spaces(char* str) {
int i, x;
for(i=x=0; str[i]; ++i)
if(!isspace(str[i]) || (i > 0 && !isspace(str[i-1])))
str[x++] = str[i];
str[x] = '\0';
}
int main(int argc, char* argv[]) {
char str[] = " irmovq $5 , %r1";
remove_extra_spaces(str);
printf("%s\n",str);
return 0;
}
#包括
void删除多余的空格(char*str){
int i,x;
对于(i=x=0;str[i];++i)
if(!isspace(str[i])|(i>0&!isspace(str[i-1]))
str[x++]=str[i];
str[x]='\0';
}
int main(int argc,char*argv[]){
字符str[]=“irmovq$5,%r1”;
删除多余的空格(str);
printf(“%s\n”,str);
返回0;
}
逗号前有一个空格。在这里使用
str
作为指针并在循环中前进也是比较传统的做法,但这是一个很好的第一步。我怀疑remove\u extra\u spaces()
可能会留下一个尾随空格。尝试“^^irmovq^^$5^^,^^%r1^^^”
其中^
是一个空格。建议哨兵帮助查看前导/尾随空格printf(“\n”,str)代码>“删除此字符串中的额外空格”-->为什么“$5”
和”、“
之间没有空格?除非重新移动空间的规则更复杂。最好解释所有规则。@chux该字符串是Y96-64指令集的汇编语言指令。因此,“$5”
和“%r1”
之间不能有空格。但是在一条指令和一个逗号之间可以有任意数量的空格,反之亦然,或者在两条指令之间可以有任意数量的空格。否则你会得到下面这样的答案,到目前为止,它还没有满足你未说明的要求。然后另一个需求出来,然后另一个。。。。