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