我有一个文本,我想在不忽略诸如“”,“,”,“,”,“!”,“。”,双引号,单引号之类的字符的情况下从其中正确置换每个单词。
我尝试了很多方法,但似乎没有人起作用(我几乎一直都收到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/

10-11 22:27