簡體   English   中英

反轉句子時這兩個指針是什么意思?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM