如何使用strcmp对2d字符数组的行(字符串)进行排序?
所以我需要对2d字符数组的行进行排序。如果用户输入:如何使用strcmp对2d字符数组的行(字符串)进行排序?,c,arrays,sorting,for-loop,c-strings,C,Arrays,Sorting,For Loop,C Strings,所以我需要对2d字符数组的行进行排序。如果用户输入: wxyz 阿布德夫 abcd lmno qrst 它应该会回来 abcd 阿布德夫 lmno qrst wxyz 虽然我对我的排序方法有问题。是否可以不使用指针进行排序,还是应该使用指针?它甚至将所有用户输入存储到temp中,这很奇怪,因为它的长度为5 #include <stdio.h> #include <string.h> void sortStr(char str[5][4]); in
#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");
}
}
}
}
#包括
#包括
void sortStr(char str[5][4]);
int main()
{
char-str[5][4];
int i,r,c;
//用户在2d数组中输入5个字符串。
对于(i=0;i使用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;
}
#包括
#包括
#包括
内部主(空){
char str[5][5];//5表示读取4个字符+空终止符
int i;
对于(i=0;iBig重要的一点:请记住,C中的字符串是终止的,并且数组中的终止符也需要空间。这意味着,如果有一个四个字符的数组,它只能容纳一个三个字符的字符串,因为第四个字符必须是终止符。如果在这样的数组中放置三个以上的字符,那么您将继续超出范围且行为未定义。如果不使用指针,您也无法真正使用数组。为什么不使用标准的qsort
?我对qsort不太熟悉。我还是初学者。您也是初学者吗?进行一点(重新)搜索怎么样?