我创建了一个程序,以字母数字顺序对数组中的字符串进行排序。
但是我的问题是如何制作它,以便在您运行程序时,它要求输入字符串(带有scanf
,但问题是如何带有char const *array
?),然后程序进行排序并创建一个新字符串。保存结果的文件。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *myFile = NULL;
static void consoleWrite(char const **a, size_t b) {
size_t i;
for (i = 0; i < b; i++)
fprintf(myFile, "%s ", a[i]);
printf("\n");
}
static int string_cmp(void const *i, void const *j) {
char const *const *pointerI = i;
char const *const *pointerJ = j;
return strcmp(*pointerJ, *pointerI); // comparaison de la chaine de caractère !
}
int main(void) {
char const *array[] = {
"01", "fdf", "gffg", "FRSTM-PFOV1DK", "FRSTM-KEFF2OQHT"
};
myFile = fopen("file.ini", "a+");
long array_size = sizeof array / sizeof *array;
qsort(array, array_size, sizeof *array, string_cmp);
consoleWrite(array, array_size);
printf("Le tri a été effectué ! ");
return 0;
}
我想将数据保存在变量数组中,然后使用此变量进行排序。
您可以为此动态分配内存。首先要求用户输入的字符串数,然后分配该大小的char*
数组。然后读取字符串,将其保存为缓冲区,为输入的字符串分配足够的内存,并将缓冲区内容复制到其中。像这样
int main(void) {
int array_size = 0;
char **array;
char buffer[256];
myFile = fopen("file.ini", "a+");
scanf("%d", &array_size);
array = malloc(array_size * sizeof(char*));
for(int i = 0; i < array_size; i++) {
scanf("%s", buffer);
array[i] = malloc(strlen(buffer) + 1);
strncpy(array[i], buffer, strlen(buffer) + 1);
}
qsort(array, array_size, sizeof *array, string_cmp);
consoleWrite(array, array_size);
printf("Le tri a été effectué ! ");
for(int i = 0; i < array_size; i++)
free(array[i]);
free(array);
return 0;
}