gpt4 book ai didi

c - 表达式必须是一个可修改的值

转载 作者:太空宇宙 更新时间:2023-11-03 23:25:58 25 4
gpt4 key购买 nike

我正在尝试使用递归来制作一个程序来反转字符串但不使用指针,但它给了我一个错误,说它必须是一个可修改的值。我该怎么办?

#include<stdio.h>
#include<conio.h>
#include<string.h>

void reverse(char x[30],int start,int end)
{
char c;
if(start>=end)
return;
c=(x[30]+start);
(x[30]+start)=(x[30]+end);
(x[30]+end)=c;
}

int main (void)
{
char st[30];
printf("Enter the string ");
gets(st);
reverse(st,0,strlen(st)-1);
puts(st);
getch();
return 0;
}

最佳答案

所有这些声明

c=(x[30]+start);
(x[30]+start)=(x[30]+end);
(x[30]+end)=c;

错了。然而,错误发生在最后两个语句中

(x[30]+start)=(x[30]+end);
(x[30]+end)=c;

例如表达式的求值

x[30]+end

产生一个临时整数对象。您不能分配临时对象。

函数可以这样定义

void reverse( char s[], size_t start, size_t end )
{
if ( ( end - start ) > 1 )
{
char c = s[start];
s[start++] = s[--end];
s[end] = c;

reverse( s, start, end );
}
}

并称呼为

reverse( st, 0, strlen( st ) );

关于c - 表达式必须是一个可修改的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27463146/

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