Hi mọi người, Em có bài tập mới về chuỗi. Khi user nhập bất cứ từ nào. Thì mình sẽ in từ đó ra theo thứ tự.
#include <stdio.h>
#include <string.h>
void printArray (char array[][500], int numberOfWords);
int main()
{
int numberOfWords;
//int sizeOfArray = strlen(argv[1]);
printf("Enter how many words:");
scanf("%d", &numberOfWords);
char str [numberOfWords][500], temp[500];
printf("Enter your words: ");
//get # of words
for (int i = 0; i < numberOfWords; ++i)
scanf ("%s", str[i]);
// storing strings in the lexicographical order
for (int i = 0; i < numberOfWords; ++i){
for (int j = i + 1; j < numberOfWords; ++j)
{
// swapping strings if they are not in the lexicographical order
if (strcmp (str[i], str[j]) > 0)
{
strcpy (temp, str[i]);
strcpy (str[i], str[j]);
strcpy (str[j], temp);
}
}
}
printf ("\nIn the lexicographical order: \n");
printArray (str, numberOfWords);
return 0;
}
void printArray (char array[][500], int numberOfWords)
{
for (int i = 0; i < numberOfWords; ++i)
{
printf ("%s \n", array[i]);
}
}
Em đã in ra thành công như vậy. Nhưng ông thầy e yêu cầu phải sử dụng argument command line để ổng chạy test case:
#include <string.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
// int numberOfWords;
// printf("Enter how many words:");
// scanf("%d", &numberOfWords);
char temp[500];
int i,j;
argv[i][j];
//printf("Enter your words: ");
//get # of words
for (int i = 1; i < argc; ++i)
scanf ("%s", argv[i]);
// storing strings in the lexicographical order
for ( i = 0; i < argc; i++)
{
for ( j = i + 1; j < argc; j++)
{
// swapping strings if they are not in the lexicographical order
if (strcmp (argv[i], argv[j]) > 0)
{
strcpy (temp, argv[i]);
strcpy (argv[i], argv[j]);
strcpy (argv[j], temp);
}
}
}
printf ("\nIn the lexicographical order: \n");
for (int i = 1; i < argc; i++)
{
printf ("%s \n", argv[i]);
}
return 0;
}
Em đã đổi lại thành như thế này biến argv[] thành 2D array. Như nó k hiển thị kết quả như trên
. Mọi người giúp em với, em cảm ơn mọi người nhiều ạ