使用 scanf c 的字母数字排序算法
An alphanumeric sorting algorithm with scanf c
我创建了一个程序,可以按字母数字顺序对数组中的字符串进行排序。
但我的问题是如何做到这一点,以便当您 运行 程序时,它会询问字符串(使用 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;
}
我创建了一个程序,可以按字母数字顺序对数组中的字符串进行排序。
但我的问题是如何做到这一点,以便当您 运行 程序时,它会询问字符串(使用 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;
}