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