Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode c错误访问代码2错误_C_String_Xcode_Reverse_String Literals - Fatal编程技术网

Xcode c错误访问代码2错误

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

嗨,我对编程有点陌生,我正在尝试用c编写一个函数来反转字符串。

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 );