在creatlist函数里,scanf不能获取字符,一输入a,b,c等字符就跳出,不知道是哪里出现了问题!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char data[10];
int length;
}SqList;
void initlist(SqList &L)
{ for(int i=0;i<20;i++)
L.data[i]=0;
L.length=0;
}
void creatlist(SqList &L)
{ int x=0;
printf("输入几个:\n");
scanf("%d",&x);
printf("输入数据\n");
for(int i=0;i<x;i++)
{ scanf("%c",&L.data[i]);
L.length++;
}
}
int main()
{
SqList L;
initlist (L);
creatlist(L);
for(int i=0;i<L.length;i++)
printf("%c\n",L.data[i]);
return 0;
}
scanf 获取不了字符
那么你是怎么输入数据的呢?
代码里要求先输入数据的长度,必须是个int
然后再输入数据
你是不是直接输入abc了
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char data[10];
int length;
} SqList;
void initlist(SqList *L)
{
memset(L, 0, sizeof(SqList));
}
void creatlist(SqList *L)
{
int x = 0, i = 0;
printf("输入几个:\n");
scanf("%d", &x);
printf("输入数据\n");
for(i = 0; i < x; ++i)
{
scanf("%c",&L->data[i]);
L->length++;
}
}
int main()
{
SqList L;
int i;
initlist(&L);
creatlist(&L);
for(i = 0; i < L.length; ++i)
printf("%c\n", L.data[i]);
return 0;
}
修改如下,供参考:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char data[20]; //data[10];
int length;
}SqList;
void initlist(SqList &L)
{
for(int i=0;i<20;i++)
L.data[i]=0;
L.length=0;
}
void creatlist(SqList &L)
{
int x=0;
printf("输入几个:\n");
scanf("%d",&x);
printf("输入数据:\n");
for(int i=0;i<x;i++)
{
getchar(); //修改
scanf(" %c",&L.data[i]);//修改
L.length++;
}
}
int main()
{
SqList L;
initlist (L);
creatlist(L);
for(int i=0;i<L.length;i++)
printf("%c\n",L.data[i]);
return 0;
}
你结构上 char data[10];为10个元素,你init函数上面循环是20个