gpt4 book ai didi

c - 反转字符串的函数将字符串更改为空,而不是反转

转载 作者:太空宇宙 更新时间:2023-11-04 07:44:07 24 4
gpt4 key购买 nike

我不允许使用任何 header ,我想创建代码,它接受一个字符串输入并将其修改为它的反向。没有编译时错误,但在运行时它确实将字符串更改为空,而不是反转。

int str_size(char str[])
{
int i=0;
while (str[i]!='\0')i++;
return i;
}

void str_rev(char str[])
{
char buff;
int size=str_size(str);

if(size==0 || size==1){}
else
{
for (int i = 0; i < (size/2)-1; i++)
{
buff=str[i];
str[i]=str[size-i];
str[size-i]=buff;
}
}
}

str_revmain(void) 中调用。

终端消息:

iplayzed@iplayzed-Lenovo-ideapad-330-15IKB:~/Egyetem/Progalap gyak 1.fv/3_hazi$ gcc -Wall -O2 -static -o my my.c
my.c: In function ‘main’:
my.c:30:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%s",str);
^~~~~~~~~~~~~~~
iplayzed@iplayzed-Lenovo-ideapad-330-15IKB:~/Egyetem/Progalap gyak 1.fv/3_hazi$ ./my
asdf
String length: 4

The original string:"asdf"
The reversed string:""

它变成空白的原因是什么?

最佳答案

反转指数略微偏离 1。

考虑 size=4,那么对于第一次迭代 (i=0),代码将执行:

  1. buff = str[0]
  2. str[0] = str[4-0] ;
  3. str[4] = 浅黄色;

回想一下,str[4] 是终止 NUL,因此代码会将 NUL 插入第一个位置,因此返回一个空字符串。

这可以通过以下方式轻松解决:

buff=str[i]; 
str[i]=str[size-i-1];
str[size-i-1]=buff;

关于c - 反转字符串的函数将字符串更改为空,而不是反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58251281/

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