Write a C program to sort names using pointers.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* compares given two strings */
int strcompare(char *str1, char *str2) {
int i, flag = 0;
/* strcmp operation */
for (i = 0; i <= strlen(str1); i++) {
flag = str1[i] - str2[i];
if (flag != 0) {
break;
}
}
return flag;
}
#include <string.h>
#include <stdlib.h>
/* compares given two strings */
int strcompare(char *str1, char *str2) {
int i, flag = 0;
/* strcmp operation */
for (i = 0; i <= strlen(str1); i++) {
flag = str1[i] - str2[i];
if (flag != 0) {
break;
}
}
return flag;
}
int main() {
char **names, temp[32];
int i, j, n;
/* get the number of inputs from the user */
printf("Enter the number of names:");
scanf("%d", &n);
getchar();
/* dynamically allocate memory and get names from user */
names = (char **)malloc(sizeof(char *) * n);
for (i = 0; i < n; i++) {
*(names + i) = (char *)malloc(sizeof(char) * 32);
printf("Name[%d]: ", i);
fgets(*(names + i), 32, stdin);
*(*(names + i) + strlen(*(names + i)) - 1) = '\0';
}
/* sort the names in ascending order */
for (i = 0; i < n - 1; i++) {
strcpy(temp, *(names + i));
for (j = i + 1; j < n; j++) {
if (strcompare(temp, *(names + j)) > 0) {
strcpy(temp, *(names + j));
strcpy(*(names + j), *(names + i));
strcpy(*(names + i), temp);
}
}
}
/* display the results */
printf("Names After Sorting:\n");
for (i = 0; i < n; i++) {
printf("%s\n", *(names + i));
}
return 0;
}
Output:
jp@jp-VirtualBox:~/$ ./a.out
Enter the number of names:5
Name[0]: Sam
Name[1]: Ram
Name[2]: Tom
Name[3]: Jerry
Name[4]: Bheem
Names After Sorting:
Bheem
Jerry
Ram
Sam
Tom
Enter the number of names:5
Name[0]: Sam
Name[1]: Ram
Name[2]: Tom
Name[3]: Jerry
Name[4]: Bheem
Names After Sorting:
Bheem
Jerry
Ram
Sam
Tom
No comments:
Post a Comment