今日份开心!

#include<stdio.h>
#include<string.h>

#define MAXSIZE 100

void sq_ins(struct sqlist *L,int i,char x);

struct sqlist{
	char a[MAXSIZE+1];
	int n;
};


int main(){
	struct sqlist num;
	int i;
	char x;
	int d;
	
	printf("请输入线性表的长度:");
	scanf("%d",&num.n);
	getchar();
	printf("请输入线性表内容:");
	for(i=0;i<num.n;i++){
		scanf("%c",&num.a[i]); 
	}
	getchar();
	printf("请输入要插入的字符:\n");
	scanf("%c",&x);
	getchar();
	printf("请输入要插入的位置:\n"); 
	scanf("%d",&d);
	getchar();

	sq_ins(&num,d,x);
	for(i=0;i<num.n;i++){
		printf("%c",num.a[i]); 
	}
	return 0;
}


void sq_ins(struct sqlist *L,int i,char x){
	int j;
	if(L->n==MAXSIZE) 
		printf("溢出");
    else if(i<1||i>(L->n+1))
		printf("插入位置错");
	else{
		for(j=L->n;j>=i-1;j--){
			L->a[j+1]=L->a[j];
		}
		(L->a[i-1])=x;
		(L->n)++;
	} 
}

用C结构实现了一个基本的插入算法,过程真的很曲折,从开始看老师的出问题,到后来把点运算符变成了指针运算符。

发现进入不了循环,开始调试,知道想进入函数直接在函数开始和结束设置断点就可以。

在调试中看出i和d始终为0,知道问题出在哪就在那里用各种形式反复尝试,最后发现是缓冲区的问题,C primer plus永远的神!教会了我很多!

最后添加了getchar函数解决了!!!

太开心了,完全是自己调试出来的!!!

明天要用C++写一次!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值