[英]C: Printing Linked List Problem
在打印此鏈接列表時,我遇到了一些問題。
該程序應該從用戶那里獲取10個字符的列表,並按照得到的順序打印出來,然后以相反的順序打印出來(還沒有到此為止)。 但是,它沒有讀取第一個字符。
例如
“請輸入字符”用戶鍵入a(程序未讀取a)bcdefghijk
然后打印bcdefghijk
試圖使其盡可能詳細。
謝謝!!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define strsize 30
typedef struct member
{
int number;
char fname[strsize];
struct member *next;
}RECORD;
RECORD* insert (RECORD *it);
RECORD* print(RECORD *it, int j);
int main (void)
{
int i;
double result;
RECORD *head, *p;
head=NULL;
result=10;
for (i=1; i<=result; i++)
head=insert (head);
print (head, result);
return 0;
}
RECORD* insert (RECORD *it)
{
RECORD *cur, *q;
int num;
char junk;
char first[strsize];
printf("Enter a character:");
scanf("%c", &junk);
scanf("%s", &first);
cur=(RECORD *) malloc(sizeof(RECORD));
strcpy(cur->fname, first);
cur->next=NULL;
if (it==NULL)
it=cur;
else
{
q=it;
while (q->next!=NULL)
q=q->next;
q->next=cur;
}
return (it);
}
RECORD* print(RECORD *it, int j)
{
RECORD *cur;
cur=it;
int i;
for(i=1;i<=j;i++)
{
printf("%s \n", cur->fname);
cur=cur->next;
}
return;
}
另外,請注意,當您讀完第一個字符時,我很確定它將忽略'k',因為您只告訴它打印10個字符,而您卻給了它11個字符。
最后,通常的編碼做法是從0開始循環,直到<目標。 例如,代替
for (i=1; i<=result; i++)
請用
for (i=0; i<result; i++)
這是一個重要的習慣,因為您將要建立索引的大多數內容都是從索引0開始的。這也使您的代碼對於幾乎從未在for循環中看到<=的程序員來說更具可讀性。 請注意,兩組條件循環相同的次數。
However, it's not reading the first character.
您正在閱讀並丟棄它。 參見scanf("%c", &junk);
不考慮其他錯誤,您的直接問題是額外的scanf
。 junk
字符是被忽略的字符。
printf("Enter a character:");
scanf("%c", &junk);
scanf("%s", &first);
另外,提高編譯器的警告級別, 並注意警告
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.