簡體   English   中英

如何在字符串中從頭到尾移動char

[英]how to move char in a string from beginning to an end

正如標題所說,在我的程序中,我(在許多程序之后)獲得了標記化的單詞。 不幸的是,由於它們被反轉,它們在一個單詞的開頭保留標點字符,例如。 ,駝鹿

如何移動,從開始到結束 - >駝鹿,

到目前為止我已經嘗試過了( ptrchar * ):

temp = strdup(ptr);
temp = &ptr[0];
ptr[0] = ptr[1];
ptr[strlen(ptr)-1] = temp;
free(temp);

但這給了我錯誤:

賦值從整數中生成沒有強制轉換的指針

警告:賦值從指針生成整數而沒有強制轉換

如何解決?

像這樣的東西:

void swap_last(char *str)
{
  const size_t len = strlen(str);
  if(len > 1)
  {
    const char   first = str[0];
    memmove(str, str + 1, len - 1);
    str[len - 1] = first;
  }
}

注意,上面假設str有效。

通常,逗號應該是它自己的標記,因此在標記化后解析它會在第一個之后放置第二個標記化器。

最好的解決方案不僅僅是拆分空格,而是將逗號識別為自己的標記,這樣你就可以測試逗號作為語法的一部分。

檢查你的代碼並推斷它缺少類型,很難知道你的temp變量的類型 - 因為在某些地方你正在使用它像char *而在其他地方你正在使用它像char

我懷疑編譯器錯誤是在行ptr[strlen(ptr)-1] = temp; (因為我懷疑temp是一個char * ),正確的解決方法是: ptr[strlen(ptr)-1] = *temp;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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