c 简单问题

来源:百度知道 编辑:UC知道 时间:2024/06/21 12:20:45
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main()
{
int binary(char *ptr[],char *str, int n);
void insert(char *ptr[], char *str, int n, int i);
char *temp, *ptr1[6];
int i;
printf("请为字符行指针数组赋初值: \n");
for(i=0;i<5;i++)
{
ptr1[i] = (char *)malloc(20);//为指针分配地址
gets(ptr1[i]);//输入字符串
}
ptr1[5] = (char *)malloc(20);
printf("\n");
printf("The original string:\n");
for(i=0;i<5;i++)//输出字符串
printf("%s\n", ptr1[i]);
printf("\ninput search string:\n");
temp = (char *)malloc(20);
gets(temp);//输入被插字符串
i = binary(ptr1,temp,5);//寻找插入位置i
printf("i= %d\n", i);
insert(ptr1, temp, 5, i);//在插入位置i处插入字符串
printf("output string:\n");
for(i=0;i<6;i++)//输出指针数组的全部字符串
printf("%s\n", ptr1[i

其实你的程序并没有多大问题,唯一一个问题就在插入函数哪里
void insert(char *ptr[], char *str, int n,int i)
{
int j;
for(j=n;j>i;j--)//你的判断条件写反了,
strcpy(ptr[j], ptr[j-1]);
strcpy(ptr[i],str);
}

至于查找位置的疑问,确实是返回low的值,因为low>hig时,循环才停止,而这时插入的位置就是low,你自己可以试一下走一遍就知道了。