【发布时间】:2019-10-16 13:55:05
【问题描述】:
我正在编写一个程序,它接收一个字符串数组并对其进行排序,然后使用搜索函数来搜索目标。我设置的字符串数组适用于我的所有排序函数,但我需要将数据放在指针字符串数组中,以便在我的搜索函数中使用 strcmp。我在我的主要功能中附上了最近的尝试。主要功能的其余部分包括排序和搜索功能,但我发布的内容仅包含数组的初始化和打印出来。在实际程序中,它将在用户选择的任何排序功能完成后从排序后的数组中复制内容。我只是想知道我将如何复制内容。
int main(void) {
char arr[][MAX_LEN] = {"AAAAA", "a", "AAA", "aaaa", "AAa", "AAAAa", "AAa", "A", "aa", "Aaa"}; // initializes string array
char *target[] = {"A"}; //initializes target
int n = sizeof(arr)/sizeof(arr[0]); // initializes n
char *arry = (char* )malloc(n); // initizlizes *arry
int i;
printf("Given string array is:");
for (i = 0; i < n; i++)
printf(" %s ", arr[i]); // prints out arr
for (i = 0; i < n; i++) { // this was my first attempt to copy arr into *arr.
strcpy(arry[i], arr[i]);
printf(" %s ", arry[i]); // used for testing to see if copying worked.
}
}
【问题讨论】:
-
更改为
char *arr[] = {...,但请注意,字符串现在将是谎言并且是只读的。您可以复制它们,但不能更改原件。 -
您确定要为此使用一个固定大小的二维数组,而不仅仅是一个指向可变长度字符串的指针数组吗?
-
quote: "我需要将数据放在指针字符串数组中,以便在我的搜索函数中使用 strcmp" 嗯 -
strcmp(arr[0], "some string")有什么问题?还是strcmp(arr[0], target[0])?我不明白您为什么要将数组复制到“另一个数组”以使用strcmp。对我来说似乎是一个 XY 问题