Связанный список в C - PullRequest
0 голосов
/ 05 мая 2011

Когда я компилирую эту программу, я получаю сообщение об ошибке в строке 45 (с комментариями) о несовместимом неявном объявлении strcpy ... Я скопировал часть этого кода, и, надеюсь, вы, ребята, поможете мне разобраться в этом

#include <stdio.h>

#include <stdlib.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, result;
RECORD *head, *p;
head=NULL;
printf("Enter the number of characters: ");
scanf("%d", &result);

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", &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("%c \n", cur->fname);
cur=cur->next;
}
return;
}

с использованием GCC для выполнения

Ответы [ 2 ]

9 голосов
/ 05 мая 2011

Возможно, вам понадобится добавить

#include <string.h>

чтобы получить объявление strcpy ().

0 голосов
/ 05 мая 2011

Не потому, что это будет лучше, чем ответ Эндрю, а потому, что все предупреждения, которые gcc дает мне ваш код, не вписываются в комментарий.

/usr/bin/gcc    -c -o str.o str.c
str.c: In function 'insert':
str.c:53: warning: format '%c' expects type 'char *', but argument 2 has type 'char (*)[30]'
str.c:57: warning: incompatible implicit declaration of built-in function 'strcpy'
str.c: In function 'print':
str.c:79: warning: format '%c' expects type 'int', but argument 2 has type 'char *'

gcc должно бытьВы предупреждение о "неявном объявлении", не игнорируйте такие вещи.Более того, используйте c99 и опцию -Wall, чтобы получить больше предупреждений, а затем исправьте их все.

c99 -Wall   -c -o str.o str.c
str.c: In function 'main':
str.c:30: warning: unused variable 'p'
str.c: In function 'insert':
str.c:52: warning: format '%c' expects type 'char *', but argument 2 has type 'char (*)[30]'
str.c:56: warning: implicit declaration of function 'strcpy'
str.c:56: warning: incompatible implicit declaration of built-in function 'strcpy'
str.c:49: warning: unused variable 'junk'
str.c:48: warning: unused variable 'num'
str.c: In function 'print':
str.c:78: warning: format '%c' expects type 'int', but argument 2 has type 'char *'
str.c:81: warning: 'return' with no value, in function returning non-void
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...