[英]how to remove special character from the beginning and end of a string in c
[英]how to move char in a string from beginning to an end
正如標題所說,在我的程序中,我(在許多程序之后)獲得了標記化的單詞。 不幸的是,由於它們被反轉,它們在一個單詞的開頭保留標點字符,例如。 ,駝鹿
如何移動,
從開始到結束 - >駝鹿,
到目前為止我已經嘗試過了( ptr
是char *
):
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.