qsort를 사용하여 작업합니다.qsort에서 사용할 Char * ptr을 Char * ptrArray []로 변환합니다.
#include <string.h>
#include <stdlib.h>
#pragma once
int cstring_cmp(const void *a, const void *b);
int main()
{
int count = 0;
char * randomStr = "sdjsn9i3ms;sa;'smsn92;w;''[w0p4;dsmsdf";
char * charArray[] =
{"s","d","j","s","n","9","i","3","m","s",";","s","a",";","'","s","m","s","n"
,"9","2",";","w",";","'","'","[","w","0","p","4",";","d","s","m","s","d","f"};
size_t strings_len = sizeof(charArray)/sizeof(char *);
/*void qsort(void *base, size_t nel,
size_t width, int (*compar)(const void *, const void *));*/
qsort(charArray, strings_len, sizeof(char *), cstring_cmp);
qsort(randomStr, strings_len, sizeof(char *), cstring_cmp);
// Pause at command prompt
system("pause");
return 0;
} // Close function Main
int cstring_cmp(const void *a, const void *b)
{
const char **ia = (const char **)a;
const char **ib = (const char **)b;
return strcmp(*ia, *ib);
}
분명히 두 번째 qsort가 작동하지 않습니다. 그것이 내 qstort에 들어가는베이스를 지원하지 못하는 내 cstring_cmp 함수를 기반으로하는지 아니면 내베이스가 올바르게 qsort에 입력되도록 포맷되지 않았기 때문에 내게 미스테리입니다.
내 질문은 char * charArray []로 char * charArray []를 동적으로, 런타임 중에, 즉석에서, 또는 당신이 생각해내는 멋진 구문으로 변환하는 방법입니다. 저는 많은 것을 둘러 보았고 어쩌면 올바른 질문을하지 않았을 것입니다. 그래서 저는 진짜 질문에 답하는 힘을 당신들에게 줄 것입니다.
C를 시작하기 만하면 내 뇌가 튀어 나오지 않도록 노력하십시오. 나와 내 뇌는 감사하게 생각합니다.
여기 최종 목표는 randomStr을 charArray 형식으로 변환하는 것입니다. qsort 그런 다음 다시 randomStr 형식으로 변환하여 일부 설정을 찾아서 바꿀 수 있습니다.
도움을 주시면 감사하겠습니다.
두뇌가없는'cmp()'의 장점은 무엇입니까? 사용법을 보여주지 않으므로 두뇌 튀김 버전과 동일하다는 것을 분명히 알지 못할 수도 있습니다. –
@JonathanLeffler Fair, 충분히 덧붙였다 :-) – cnicutar