所以我需要对二维字符数组的行进行排序。如果用户输入:
它应该返回
x
虽然我的排序方法有问题。是否可以不使用指针进行排序还是应该使用指针?它甚至将所有用户输入存储到 temp 中,这很奇怪,因为它的长度为 5。
#include <stdio.h>
#include <string.h>
void sortStr(char str[5][4]);
int main()
{
char str[5][4];
int i,r,c;
//user inputs 5 strings in 2d array.
for(i=0;i<5;i++)
{
printf("\nEnter a string %d: ",i+1);
scanf(" %[^\n]",&str[i]);
}
sortStr(str);
//display array
for(r = 0; r<5; r++)
{
for(c=0; c<4; c++)
{
printf("%c",str[r][c]);
}
printf("\n");
}
return 0;
}
void sortStr(char str[5][4])
{
int i, j;
char temp[5];
//this sorts each row based
for(i=0; i<5; i++){
printf("T1:\n");
for(j=i+1; j<4; j++)
{
printf("T2:\n");
if(strcmp(str[i],str[j]) > 0)
{
//testing where code crashes
printf("T3:\n");
strcpy(temp,str[i]);
printf("T4:\n");
printf("%s\n",temp);//temp has all user input. How?
strcpy(str[i],str[j]);//code crashes
printf("T5:\n");
strcpy(str[j],temp);
printf("T6:\n");
}
}
}
}
qsort
像这样使用
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void){
char str[5][5];//5 for read 4 character + null-terminator
int i;
for(i=0;i<5;i++){
printf("\nEnter a string %d: ", i+1);
scanf(" %4[^\n]", str[i]);
}
qsort(str, 5, sizeof(*str), (int (*)(const void*, const void*))strcmp);
puts("");
for(i=0;i<5;i++){
puts(str[i]);
}
return 0;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句