簡體   English   中英

用C編程語言比較鏈表中的字符數組

[英]Comparing chararrays in linked list in the C programming language

您如何比較和排序鏈表中的字符數組,您不能像這樣'Smith'>'Andersson'進行比較?

struct person {
char name[20];
struct person *nextPerson;
};

.
void createNode(PersonPtr *sPtr, struct person t[]){
  PersonPtr newPtr; /* pointer to new node */
  PersonPtr previousPtr; /* pointer to previus node in  list */
  PersonPtr currentPtr; /* pointer to current node in list */
.
/* loop to find correct location in the list */
while (currentPtr != NULL && t->name > currentPtr->name) { /* this will not sort on name */
  previousPtr = currentPtr; /* walk to... */
  currentPtr = currentPtr->nextPerson; /* ...next node */
}/* end while */

關閉,但不完全是,您不能只在字符串上使用“>”或“ <”。 您想要的是strcmp

您想要的是:

while (currentPtr != NULL && strcmp(t->name,currentPtr->name) > 0)

男子strcmp (3)

編輯 :您的變量t->name是指向char的指針。 當您執行t->name > currentPtr->name您正在比較它們的值,即字符地址。

不,您不能只使用>運算符。 您需要調用庫函數strcmp

strcmp是您要尋找的功能。

如果“ chararrays”的意思是“字符串”,則可以使用strcmp進行比較。

暫無
暫無

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

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