Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 文本中的右置换词_C_String_Pointers - Fatal编程技术网

C 文本中的右置换词

C 文本中的右置换词,c,string,pointers,C,String,Pointers,我有一个文本,我想右对齐其中的每个单词,同时忽略诸如:“,”,“?”,“!”,“,”,双引号,单引号等字符。 我尝试了很多方法,但似乎没有一种有效(我几乎一直都收到分割错误)。 例如:对于nr_permutari=1和text=“.abcd.!”,文本将变为:“.dabc!” 这是我的代码: void permutari (char *text,char * nr_permutari) { int numar_permutari=atoi(nr_permutari);

我有一个文本,我想右对齐其中的每个单词,同时忽略诸如:“,”,“?”,“!”,“,”,双引号,单引号等字符。 我尝试了很多方法,但似乎没有一种有效(我几乎一直都收到分割错误)。 例如:对于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;
        }
    }   
}
void permutari(char*text,char*nr\u permutari){
int numar_permutari=atoi(nr_permutari);
int i,j,k;
对于(j=1;j1)

需要测试
\0
(字符串结尾)

然后

应该是

char temp;

顺便说一下,
*(text+k)
text[k]
这更容易阅读。

快速方法:首先通过形成一个新字符串来去除所有不需要的字符。然后执行置换操作。@ARK如果我这样做,我将无法复制不需要的字符。在这里工作。你做了2次更改吗?你尝试了什么单词?发生了什么?是的。我做了。只是随机给出了一个例子,“aaaaa”.Works.1)检查应该与上面完全相同的代码2)如何调用permutari?文本有大约2-3行文本,permutari为1。我不知道为什么它不起作用…您尝试的文本是什么?如果您使用常量字符串调用函数,例如
permutari(“aaaaa”,“1”)
这将无法工作,因为“aaaaa”无法更改。请执行以下操作:
char s[]=“aaaaa”;permutari,…
while(*(text+k)!='\n' && *(text+k)!='.' 
               && *(text+k)!=',' && *(text+k)!=' '
               && *(text+k)!='?' && *(text+k)!='!'
               && *(text+k))
char *temp;
char temp;