我有一个文本,我想在不忽略诸如“”,“,”,“,”,“!”,“。”,双引号,单引号之类的字符的情况下从其中正确置换每个单词。
我尝试了很多方法,但似乎没有人起作用(我几乎一直都收到Segmentation Fault)。
例如:对于nr_permutari = 1和text =“。abcd。!” ,文本将变为:“。dabc!”
这是我的代码:
void permutari (char *text,char * nr_permutari) {
int numar_permutari=atoi(nr_permutari);
int i,j,k;
for(j=1;j<=numar_permutari;j++) {
for (i=0; i <strlen(text)-1; i++) {
k=i;
while(*(text+k)!='\n' && *(text+k)!='.'
&& *(text+k)!=',' && *(text+k)!=' '
&& *(text+k)!='?' && *(text+k)!='!')
k++;
while(i<k-1) {
char *temp;
temp = *(text+i);
*(text+i) = *(text+i+1);
*(text+i+1) = temp;
i++;
}
i=k;
}
}
}
最佳答案
第一
while(*(text+k)!='\n' && *(text+k)!='.'
&& *(text+k)!=',' && *(text+k)!=' '
&& *(text+k)!='?' && *(text+k)!='!')
需要测试
\0
(字符串结尾)...while(*(text+k)!='\n' && *(text+k)!='.'
&& *(text+k)!=',' && *(text+k)!=' '
&& *(text+k)!='?' && *(text+k)!='!'
&& *(text+k))
然后
char *temp;
应该
char temp;
顺便说一句,
*(text+k)
是text[k]
,它更易于阅读。关于c - 正确的文字置换词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34233884/