Xcode c错误访问代码2错误
嗨,我对编程有点陌生,我正在尝试用c编写一个函数来反转字符串。Xcode c错误访问代码2错误,c,string,xcode,reverse,string-literals,C,String,Xcode,Reverse,String Literals,嗨,我对编程有点陌生,我正在尝试用c编写一个函数来反转字符串。 char*ft\u strev(char*str) { 字符x; int i=0,j=0,k; while(str[i]!='\0') { i++; } k=i; 而(j
char*ft\u strev(char*str)
{
字符x;
int i=0,j=0,k;
while(str[i]!='\0')
{
i++;
}
k=i;
而(j
当我把abc应用到函数中时,我想得到cba。
对于初学者,此代码段包含逻辑错误
x = str[j];
str[j] = str[i]; //here is the error
str[i] = x;
对于索引的初始值,i
str[i]
等于'\0'
。因此,将获得一个空字符串
代码片段应该如下所示
x = str[j];
str[j] = str[i-1]; //here is the error
str[i-1] = x;
至于错误,那么您似乎正在尝试反转字符串文字。您不能更改字符串文字。任何修改字符串文字的尝试都会导致未定义的行为
根据C标准(6.4.5字符串文字):
7未说明这些数组是否不同,前提是它们的
元素具有适当的值如果程序试图
修改这样一个数组,行为是未定义的。
您可以按照以下方式调用函数:声明字符数组并使用字符串文本初始化它
char s[] = "abc";
ft_strrev( s );
该语句在逻辑上是错误的,但是您是否正在尝试反转字符串文字?你不能修改字符串文字。我不知道你想用文字反转说什么。你能给我这样的初学者解释一下吗?我想你调用的是类似ft_strev(“abc”)的函数;或者像char*s=“abc”;斯特雷夫堡(s);您应该像char s[]=“abc”那样调用它;斯特雷夫堡(s);是的,如果这不正确,我应该如何调用该函数?您应该声明一个字符数组,正如我在更新的前一条注释中所示。
char s[] = "abc";
ft_strrev( s );