簡體   English   中英

將字符串源復制到目標,然后在C中附加一個字符

[英]Copy string source into destination, and then append a character in C

將字符串復制到目標位置,在目標位置末尾添加字符C,然后將終止目標位置為null。 我們可以假設sizeof(destination)> = strlen(source)+ 2

void strcpyALT(char* dest, char* source, char c)  {
  char* dst = dest;
  char* src = source;
  while(*src) {
      *(dst++) = *(src++);
  }
  dst = dst + 1;
  *dst = c;
  dst = dst + 1;
  *dst = '\0';
}

我是C語言的新手,但有兩個問題,在假設的前提下,這段代碼似乎正確嗎? 我為自己設置了一些本地測試,但只想確保我沒有犯任何我沒有捕捉到的明顯錯誤。 另外,有沒有更干凈的方法來寫入最后4行?

給定假設,此代碼似乎正確嗎?

沒有。

  while(*src) {
      *(dst++) = *(src++);
  }
  dst = dst + 1;
  *dst = c;

在這里,當您退出循環時, dst將已經指向c應該被寫入的位置(附加到字符串)。 當你做dst = dst + 1; ,則保持該位置不變,然后將c寫入所需位置的下一個位置。

因此,丟棄dst = dst + 1;

(拉伸)如有疑問,請進行更多測試。

另外,有沒有更干凈的方法來寫入最后4行?

還有其他方法(現在要寫3行),但是我想這很干凈。

簡而言之:刪除此行,緊接循環后的一行,“ dst = dst + 1”。 休息吧。

有沒有更干凈的方法來寫最后4行?

*dest++ = c;   
*dest   = '\0';    //reduced to 2 lines.

暫無
暫無

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

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