【发布时间】:2021-09-21 07:03:43
【问题描述】:
我有四个字符串。用户可以选择在它们之间交换字符串。但是当我开始创建函数时,我找不到避免使用多个 if 语句来涵盖所有情况的方法。所以,我用谷歌搜索它,查看论坛,但我没有发现 C 语言中是否有可能有四个变量,每个变量都以某种方式链接到一个字符串,然后使用变量在它们之间交换字符串。还是有别的办法?
char string_one[] = {"This is string 1"};
char string_two[] = {"This is string 2"};
char string_three[]= {"This is string 3"};
char string_four []= {"This is string 4"};
void swap_strings(char *str1, char *str2){
//function to swap any 2 strings
char *temp;
temp=str1;
str1=str2;
str2=temp;
}
void swap_menu(){
int choice1, choice2;
printf("Which string do you want to swap: ");
scanf("%i", &choice1);
printf("Enter string o you want to swap with: ");
scanf("%i", &choice2);
if(choice1 == 1 && choice2 == 2)
swap_strings(string_one, string_two );
if(choice1 == 2 && choice2 == 3)
swap_strings(string_two, string_three );
if(choice1 == 3 && choice2 == 4)
swap_strings(string_three, string_four );
if(choice1 == 1 && choice2 == 3)
swap_strings(string_one, string_three );
}
【问题讨论】:
-
也许有一个 for 循环。从零开始,进行四次,并再次使用内部 for 循环四次
-
如果使用字符串数组将字符串分配在内存中的连续位置,则可以概括
ifs的系列; 例如const char *strings[] = { "a", "b", "c" };. -
你的
swap_strings函数没有做任何事情,因为你正在修改两个指针。一般来说,如果你有一些东西并且想通过索引来访问它们,那么使用数组而不是很多变量。