[英]What do these two pointers mean when reversing a sentence?
我不明白句子中的單詞是如何反轉的,使用下一個代碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(void) {
char *sent=(char*)calloc(120, sizeof(char*));
puts("enter sentence:");
gets(sent);
size_t n= strlen(sent);
char arr[n+1];
char *p = arr;
char *q = sent + n;
while (q != sent){
while (q != sent && isblank(*(q-1))) *p++ = *--q;
char *r = q;
while (r != sent && !isblank(*(r-1))) --r;
memcpy(p, r, q-r);
p+= q - r;
q = r;
}
puts("original sentence:");
puts(sent);
puts("reversed sentence:");
puts(arr);
return 0;
}
有人可以向我解釋指針*q
和*r
的含義嗎?
q 和 r 都指向末尾。
而 q 用於處理空格(指向單詞的末尾)
r 用於檢測單詞的開頭。
響應。 memcpy(p, r, qr)
從 r 中取出一個長度為 qr 的詞並將其放入 p
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.