我打编译器是microsoft visual studio 2005,我的源程序如下,注意注释的地方,就是scan函数中的scanf_s函数,程序运行正常,但是当输入字符串大于或等于8个字符时,链表的输出就不正常了,7个以下是正常的,其他的不改变,单单把scanf_s改为scanf可以解决这个问题,但是系统又会给一个警告。。。。要怎么解决啊。。要正常又没警告的。
scanf_s#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 1000
typedef struct LNode
{ char data;
struct LNode *next;
}LinkList;
typedef struct
{
char elem[MAXSIZE];
int top;
}SqStack;
int main()
{ LinkList *CreateList(LinkList *L,char a[],int n);
void scan(char a[]);
void display(LinkList *L);
char a[MAXSIZE];
LinkList *L;
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
scan(a);
L=CreateList(L,a,strlen(a));
display(L);
return 1;
}
LinkList *CreateList(LinkList *L,char a[],int n)
{
LinkList *s,*r;
int i;
r=L;
for(i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
return L;
}
void scan(char a[])
{
scanf_s("%s",a);//这一行
}
void display(LinkList *L)
{
LinkList *p=L->next;
while(p!=NULL)
{
printf("%c",p->data);
printf("1\n");//test
p=p->next;
}
printf("\n");
}
关键是用scanf_s的话不正常。。。