gpt4 book ai didi

c++ - 如何在 C++ 中用指针翻转 Char 数组

转载 作者:搜寻专家 更新时间:2023-10-31 02:14:13 24 4
gpt4 key购买 nike

我的程序的功能是简单地拥有一个包含名字和姓氏的字符数组,然后将其切换为姓氏和名字。(汤姆,克鲁斯 --> 克鲁斯,汤姆)。我刚开始使用指针,找不到重新排列 Char 数组的方法。我试过 for 循环和 while 循环,但我真的不知道如何解决这个问题。我不一定需要硬代码。即使是一个建议也会帮助我朝着正确的方向前进。我没有收到任何错误。由于要求,我无法修改 main 函数,函数头必须是

char *LastFirstName(char *ptr).

谢谢

#include <iostream>
using namespace std;

char *LastFirstName(char *name);

int main()
{
char name[41];
char *ptr;
// Force user to enter full name, if not entered, ask again
while (true)
{
name[0] = '\0';
cout << "Enter your full name: ";
cin.getline(name, 40);
if (name[0] == '\0')
cout << "Name not entered. Re-enter full name.\n";
else
break;
}
cout << "Before calling function LastFirstName(), name is " << name
<<endl;

ptr = LastFirstName(name);
cout << "After calling function LastFirstName(), name is " << ptr << endl;

system("pause");
return 0;
}

// This is where I am havinbg trouble
char *LastFirstName(char *ptr) {
char *p;
p = ptr;
int len = strlen(ptr);

return ptr;
}

最佳答案

你可以使用这个函数:

void LastFirstName(char* first_last_name)
{
char first_name[41] = {0};
char last_name[41] = {0};

// Dunno what is your separator ' ' or ','...
char* sep_index = strchr(first_last_name, ','); // This return the first index of ','.
*sep_index = '\0';

strcpy(first_name, first_last_name); // Lets copy first name.
strcpy(last_name, first_last_name + strlen(first_last_name) + 1); // Lets copy last name.

// Lets copy it in reverse order.
strcpy(first_last_name, last_name);
strcpy(first_last_name + strlen(last_name) + 1, first_name);
first_last_name[strlen(last_name)] = ',';
}

请注意,我们不需要返回 char*,因为该函数正在修改它作为参数接收的数组,所以实际上 name 数组现在已按要求反转。

关于c++ - 如何在 C++ 中用指针翻转 Char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40208431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com