[英]Last word not reversed while reversing a sentence
我已经写了我的程序,它可以将一个句子反转并打印出来。
在这段代码中,除了最后一个单词,我得到的所有单词都是正确的。 也就是说,在将代码中的句子反转之后,“ hiii”仍然保留为“ iiih”,其余输出是正确的。
void reverse(char * s, int len){
int counter = 0;
int end = len - 1;
char temp;
for (counter = 0; counter < len / 2; counter++, end--) {
temp = s[counter];
s[counter] = s[end];
s[end] = temp;
}
}
int main(void){
char s[] = "hiii all i want to reverse this sentence so please help me fast";
int c = 0;
int len = strlen(s);
int wl = 0;
int start = 0;
printf("\n s = %s", s);
reverse(s, len);
for (c = 0; c < len; c++){
if (!wl)
start = c;
if (s[c] != ' '){
wl++;
}
else {
reverse(s + start, wl);
wl = 0;
}
}
printf("\nnow s = %s", s);
}
字符串中的最后一个单词不以空格字符结尾。 因此,在for循环(未测试) 之后 ,您需要以下代码:
if (wl > 0) {
reverse(s + start, wl);
}
也要倒数最后一个字。
添加:完整代码:
int main(void) {
char s[] = "hiii all i want to reverse this sentence so please help me fast";
int c = 0;
int len = strlen(s);
int wl = 0;
int start = 0;
printf("\n s = %s", s);
reverse(s, len);
for (c = 0; c < len; c++) {
if (!wl) {
start = c;
}
if (s[c] != ' ') {
wl++;
} else {
reverse(s + start, wl);
wl = 0;
}
}
if (wl > 0) {
reverse(s + start, wl);
}
printf("\nnow s = %s", s);
}
输出:
s = hiii all i want to reverse this sentence so please help me fast now s = fast me help please so sentence this reverse to want i all hiii
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.