一.二级指针第一种内存模型
//无测试用例写法
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
int i = 0;
int j = 0;
char *tmp = NULL;
char *ArrayStr[] = {"cccc","aaaa","bbbb","1111"};
for (i = 0; i < 4; i++)
{
printf("%s\n", ArrayStr[i]);
}
//排序
for (i = 0; i < 4; i++)
{
for (j = i + 1; j < 4; j++)
{
if (strcmp(ArrayStr[i] , ArrayStr[j])>0)
{
tmp = ArrayStr[i];
ArrayStr[i] = ArrayStr[j];
ArrayStr[j] = tmp;
}
}
}
//排序后
for (i = 0; i < 4; i++)
{
printf("%s\n", ArrayStr[i]);
}
system("pause");
}
//测试用例
int printArr(char **ArrayStr,int inum)
{
int i = 0;
for (i = 0; i < inum; i++)
{
printf("%s\n", ArrayStr[i]);
}
return 0;
}
int sortArr(char **ArrayStr, int inum)
{
int i = 0;
int j = 0;
char *tmp = NULL;
//排序
for (i = 0; i < inum; i++)
{
for (j = i + 1; j < inum; j++)
{
if (strcmp(ArrayStr[i], ArrayStr[j])>0)
{
tmp = ArrayStr[i];
ArrayStr[i] = ArrayStr[j];
ArrayStr[j] = tmp;
}
}
}
return 0;
}
void main()
{
int i = 0;
int j = 0;
char *ArrayStr[] = { "cccc", "aaaa", "bbbb", "1111" };
printf("排序之前:\n");
printArr(ArrayStr, 4);
printf("排序之后:\n");
sortArr(ArrayStr, 4);
printArr(ArrayStr, 4);
system("pause");
}
二.二级指针的第二种内存模型
void main()
{
int i = 0;
int j = 0;
char tmp[60];
char ArrayStr[10][20] = { "cccc", "aaaa", "bbbb", "dddd"};
printf("排序之前:\n");
for (i = 0; i < 4; i++)
{
printf("%s\n", ArrayStr[i]);
}
for (i = 0; i < 4; i++)
{
for (j = i + 1; j < 4; j++)
{
if (strcmp(ArrayStr[i], ArrayStr[j])>0)
{
strcpy(tmp, ArrayStr[i]);
strcpy(ArrayStr[i], ArrayStr[j]);
strcpy(ArrayStr[j], tmp);
}
}
}
printf("排序之后:\n");
for (i = 0; i < 4; i++)
{
printf("%s\n", ArrayStr[i]);
}
system("pause");
}
int printArr(char ArrayStr[10][20],int inum)
{
int i = 0;
for (i = 0; i < inum; i++)
{
printf("%s\n", ArrayStr[i]);
}
return 0;
}
int sortArr(char ArrayStr[10][20], int inum)
{
int i = 0;
int j = 0;
char tmp[60];
for (i = 0; i < inum; i++)
{
for (j = i + 1; j < inum; j++)
{
if (strcmp(ArrayStr[i], ArrayStr[j])>0)
{
strcpy(tmp, ArrayStr[i]);
strcpy(ArrayStr[i], ArrayStr[j]);
strcpy(ArrayStr[j], tmp);
}
}
}
return 0;
}
void main()
{
int i = 0;
int j = 0;
char ArrayStr[10][20] = { "cccc", "aaaa", "bbbb", "dddd" };
printf("排序之前:\n");
printArr(ArrayStr, 4);
printf("排序之后:\n");
sortArr(ArrayStr, 4);
printArr(ArrayStr, 4);
system("pause");
}
三.二级指针的第三种内存模型
{
int i = 0;
int j = 0;
char buf[100];
char **myarray = (char **)malloc(10 * sizeof(char *));
if (myarray == NULL)
{
return;
}
for (i = 0; i < 10; i++)
{
myarray[i] = (char *)malloc(100 * sizeof(char));//char buf[100]
if (myarray[i] == NULL)
{
printf("ddddde\n");
return;
}
sprintf(myarray[i], "%d%d%d", i, i, i);
}
printf("排序之前");
for (i = 0; i < 10; i++)
{
printf("%s\n", myarray[i]);
}
//排序
for (i = 0; i < 10; i++)
{
for (j = i + 1; j < 10; j++)
{
if (strcmp(myarray[i], myarray[j])>0)
{
strcpy(buf, myarray[i]);
strcpy(myarray[i], myarray[j]);
strcpy(myarray[j], buf);
}
}
}
//排序之后
printf("排序之后\n");
for (i = 0; i < 10; i++)
{
printf("%s\n", myarray[i]);
}
for (i = 0; i < 10; i++)
{
free(myarray);
}
if (myarray != NULL)
{
free(myarray);
}
system("pause");
}
{
int i = 0;
for (i = 0; i < inum; i++)
{
printf("%s\n", myarray[i]);
}
return 0;
}
int sortArray(char **myarray, int inum)
{
//排序
int i = 0;
int j = 0;
char *tmp = NULL;
for (i = 0; i < inum; i++)
{
for (j = i + 1; j < inum; j++)
{
if (strcmp(myarray[i], myarray[j])>0)
{
tmp = myarray[i];
myarray[i] = myarray[j];
myarray[j] = tmp;
}
}
}
return 0;
}
int main()
{
int i = 0;
int j = 0;
char buf[100];
char **myarray = (char **)malloc(10 * sizeof(char *));
if (myarray == NULL)
{
return 0;
}
for (i = 0; i < 10; i++)
{
myarray[i] = (char *)malloc(100 * sizeof(char));//char buf[100]
if (myarray[i] == NULL)
{
printf("ddddde\n");
return 0;
}
sprintf(myarray[i], "%d%d%d", i, i, i);
}
//排序之前
printArray(myarray, 10);
//排序
sortArray(myarray, 10);
//排序之后
printArray(myarray, 10);
//释放内存
for (i = 0; i < 10; i++)
{
free(myarray[i]);
}
if (myarray != NULL)
{
free(myarray);
}
system("pause");
}
四。两个辅助指针变量挖字符串
有一个字符串符合以下特征(”abcdef,acccd,eeee,aaaa,e3eeeee,sssss,";),要求写一个函数(接口),输出以下结果
1) 以逗号分割字符串,形成二维数组,并把结果传出;
2) 把二维数组行数运算结果也传出。
strchr(“aa,aa”,’,’ );
请自己定义一个接口(函数)。
要求1:能正确表达功能的要求,定义出接口(函数)(30分);
要求2:正确实现接口(函数),并实现功能(40分);
要求3:编写正确的测试用例。(30分)。
*/
{
char *p = NULL;
char *ptmp = NULL;
int count = 0;
int tmpcount = 0;
p = buf1;
ptmp = buf1;
char buf2[1024];
do{
p=strchr(p, c);
if (p != NULL)
{
tmpcount = p - ptmp;
memcpy(buf[count], ptmp, tmpcount);
buf[count][tmpcount] = '\0';
printf("%s\n", buf2);
ptmp = p = p + 1;
count++;
}
else
{
break;
}
} while (*p != '\0');
return 0;
}
void main()
{
char *p = "abcdef, acccd, eeee, aaaa, e3eeeee, sssss, ";
char c = ',';
char buf[10][30];
int ncount;
spitStr(p, c, buf, &ncount);
system("pause");
}