在C中实现反向功能时出现分段错误

罗克斯格雷

我决定reverse(s)在C语言中创建一个函数,在此过程中,我在编译过程中遇到了2条警告消息。

alexander@debian:~/Dropbox/GitRepo/M2MPL/text$ make reverse
cc     reverse.c   -o reverse
reverse.c: In function 'reverse':
reverse.c:29:2: warning: return makes integer from pointer without a cast [enabled by default]
reverse.c:29:2: warning: function returns address of local variable [enabled by default]
alexander@debian:~/Dropbox/GitRepo/M2MPL/text$ 

由于他们警告我试着忽略他们并运行程序,当我输入一个字符数组Dropbox使用scanf("%s", str1);,其结果表现为Segmentation Fault

alexander@debian:~/Dropbox/GitRepo/M2MPL/text$ ./reverse
Enter a string to reverse: Dropbox
Segmentation fault
alexander@debian:~/Dropbox/GitRepo/M2MPL/text$ 

这是该reverse(s)函数的实现

/* reverse: returns a reversed string of s */
char reverse(char s[])
{
    int i, len=strlen(s);
    char result[LIMIT];

    for (i = len; i >= 0; --i) {
            result[len-i] = s[i];
    }

        return result;
}

完整代码在这里!

我需要帮助才能知道为什么我得到的Segmentation fault不是xobporD结果,如果可能的话,还提出了解决此问题的建议。

vlad_tepesch

首先:
编译器不会仅仅出于娱乐目的而警告您。如果您忽略编译器警告,则程序不会崩溃,您不会感到惊讶。

您将指针返回到在函数末尾超出范围的自动变量。返回给调用方的指针无效,因为它指向reverse函数返回后不再存在的对象

另一个问题是,您复制的第一个字符是,'\0'因此结果字符串为空。您需要反转字符串的字符,但仍将放在'\0'字符串的末尾。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C中实现链表时出现分段错误

来自分类Dev

尝试在C ++中实现固定大小队列时出现分段错误

来自分类Dev

在 C++ 中为 protobuffer 实现 ByteSize() 时出现分段错误

来自分类Dev

反向字符串功能出现分段错误

来自分类Dev

A *在C中实现,分段错误

来自分类Dev

在C ++中操作向量时出现分段错误

来自分类Dev

从C ++中的文件加载数据时出现分段错误

来自分类Dev

尝试克隆函数时出现分段错误(在C中)

来自分类Dev

在C中初始化数组时出现分段错误

来自分类Dev

使用链表中的指针结构时出现C分段错误

来自分类Dev

从C ++中的文件加载数据时出现分段错误

来自分类Dev

扫描文件并计算c中的值时出现分段错误

来自分类Dev

尝试克隆函数时出现分段错误(在C中)

来自分类Dev

使用链表中的指针结构时出现C分段错误

来自分类Dev

在 C 中创建新文件时出现分段错误

来自分类Dev

exe C时出现分段错误错误

来自分类Dev

调用c函数时出现分段错误

来自分类Dev

写入文件时出现C分段错误

来自分类Dev

从向量擦除时出现C ++分段错误

来自分类Dev

C - 使用 strlen 时出现分段错误?

来自分类Dev

创建树时出现分段错误 (C)

来自分类Dev

Trie在C中的实现:分段错误

来自分类Dev

尝试在OpenSSL中使用EVP功能时出现分段错误

来自分类Dev

添加此功能时出现分段错误(核心已转储)

来自分类Dev

使用功能创建链表时出现分段错误

来自分类Dev

使用某些OpenCV功能时出现分段错误

来自分类Dev

在C ++中实现回调时出现c ++ -fpermissive错误

来自分类Dev

尝试在C中获取文件扩展名时出现分段错误错误

来自分类Dev

将 unicode 替换为 C++ 字符串中的空格时出现分段错误错误

Related 相关文章

热门标签

归档