/* 第53题、
函数fun的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。
*/
#include <stdio.h>
#include <string.h>
#define N 10
void sort (char *pstr[N]);
int main()
{
int i;
char *p[N]; /*定义一个行指针 */
char str[N][N];
printf("请输入6个字符串:");
for (i = 0; i < 6; i++)
{
scanf("%s", str[i]);
}
for (i = 0; i < 6; i++)
{
p[i] = str[i];
}
sort(p);
printf("排序后的字符串为:");
for (i = 0; i < 6; i++)
{
printf("%s\n", str[i]);
}
return 0;
}
void sort (char *pstr[N])
{
int i;
int j;
char *p;
for (i = 0; i < 6; i++)
{
for (j = i + 1; j < 6; j++)
{
if (strcmp(*(pstr + i), *(pstr + i)) > 0)
{
p = *(pstr + i);
*(pstr + i) = *(pstr + j);
*(pstr +j) = p;
}
}
}
}
输入6个字符啥都没排序``是怎么回事``
编译没问题
----------------解决方案--------------------------------------------------------
在使用数组 字符串时 一般都会+ 一个'\0'结尾
----------------解决方案--------------------------------------------------------
char *p[N]; /*定义一个行指针 */
这是定义一个行指针吗?其它的我还没有看
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <string.h>
#define N 10
void sort (char *pstr[N]);
int main()
{
int i;
char *p[N]; /*定义一个行指针 */
char str[N][N];
printf("请输入6个字符串:");
for (i = 0; i < 6; i++)
{
scanf("%s", str[i]);
}
for (i = 0; i < 6; i++)
{
p[i] = str[i];
}
sort(p);
printf("排序后的字符串为:");
for (i = 0; i < 6; i++)
{
printf("%s\n", p[i]);
}
return 0;
}
void sort (char *pstr[N])
{
int i;
int j;
char *p;
for (i = 0; i < 6; i++)
{
{ for (j = i + 1; j < 6; j++)
if (strcmp((pstr[i]), (pstr[j])) > 0)
{
p = (pstr[i]);
(pstr[i]) = (pstr[j]);
(pstr[j]) = p;
}
}
}
}
----------------解决方案--------------------------------------------------------