gpt4 book ai didi

c - 强大的字符串反转

转载 作者:行者123 更新时间:2023-12-04 11:56:36 24 4
gpt4 key购买 nike

我正在尝试编写一个关于反转字符串的简单面试问题。

这是我的代码:

#include <string.h>

char* rev( char* str)
{
int i,j,l;

l = strlen(str);

for(i=0,j=l-1; i<l/2 ; i++, j--)
{
str[i] = (str[i] + str[j]);
str[j] = str[i] - str[j];
str[j] = str[i] - str[j];
}

return str;
}

int main()
{
char *str = " hello";
printf("\nthe reverse is %s ...", rev(str));

return 1;
}

基本上,这个给出了一个段错误。

我有以下问题:

  1. 我遇到段错误可能是因为,字符加起来是 ascii 中未定义的内容,因此我无法将它们存储回字符,我正在使用 www.codepad.org [我想知道它是否仅支持 ascii! !]。我的理解是正确的还是有其他的东西。

  2. 如何针对同一平台更正问题 [我的意思是就地交换 codepad.org]

  3. 这里我必须使用一个额外的整数 l 来计算长度。所以为了通过就地交换来节省一个字符空间..我正在使用一个额外的 int ! .. 只是为了给面试官留下深刻印象 :) ... 这种方法值得吗!!!

  4. 这是为那些对编写单元测试/API 测试感兴趣的人准备的。我想要一个健壮的实现,所以什么是可能的测试用例。我假设如果面试官问这样一个简单的问题..他肯定想要一些非常强大的实现和测试用例。我想到的很少:

    • 传递空字符串传递整数

    • 字符串改为传递整数数组字符数组。

    • 很长的字符串,

    • 特殊字符的单个字符串。

任何意见/建议都会有所帮助。

最佳答案

这一行:

char *str = " hello";

可能指向只读存储器。试试这个:

char str[] = " hello";

(您还有其他一些错误,但此更改将修复您的段错误)。

关于c - 强大的字符串反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1698143/

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