C 文本中的右置换词
我有一个文本,我想右对齐其中的每个单词,同时忽略诸如:“,”,“?”,“!”,“,”,双引号,单引号等字符。 我尝试了很多方法,但似乎没有一种有效(我几乎一直都收到分割错误)。 例如:对于nr_permutari=1和text=“.abcd.!”,文本将变为:“.dabc!” 这是我的代码: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);
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;