47 lines
1.3 KiB
C
47 lines
1.3 KiB
C
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
#include <string.h>
|
||
|
||
void readString(char** stringPtrPtr, int stringCount) {
|
||
char tempStringPtr[81] = {0};
|
||
int i = 0;
|
||
for (i = 0; i < stringCount; i++) {
|
||
scanf("%80s", tempStringPtr);//读入临时字符串
|
||
stringPtrPtr[i] = malloc(strlen(tempStringPtr) + 1);//创建一个和temp一样大的空间
|
||
strcpy(stringPtrPtr[i], tempStringPtr);//把temp 复制进新申请的地址里
|
||
}
|
||
}
|
||
|
||
void swap(char** a, char** b) {
|
||
char* tmp = *a;
|
||
*a = *b;
|
||
*b = tmp;
|
||
}
|
||
|
||
int main() {
|
||
int n = 0;
|
||
int i = 0;
|
||
char** stringPtrArrayPtr;//指向字符串指针数组的指针,字符串指针数组的大小要根据N的数量确定有几个指针
|
||
int moved = 1;
|
||
|
||
scanf("%d", &n);
|
||
stringPtrArrayPtr = (char**) malloc(sizeof(int* ) * n);//根据N的大小决定要多少个字符串指针
|
||
|
||
readString(stringPtrArrayPtr, n);
|
||
|
||
while(moved) {
|
||
moved = 0;
|
||
for (i = 0; i < n - 1; i++) {
|
||
if (strcmp(stringPtrArrayPtr[i], stringPtrArrayPtr[i+1]) > 0) {
|
||
//若前面的比后面的大,就交换
|
||
moved = 1;
|
||
swap(&stringPtrArrayPtr[i], &stringPtrArrayPtr[i+1]);
|
||
}
|
||
}
|
||
}
|
||
|
||
for (i = 0; i < n; i++) {
|
||
printf("%s\n", stringPtrArrayPtr[i]);
|
||
}
|
||
return 0;
|
||
} |