gpt4 book ai didi

c - 运行时错误 "Segmentation Fault"。如何去除它? (我在 Ubuntu 中工作。)

转载 作者:行者123 更新时间:2023-11-30 19:24:10 25 4
gpt4 key购买 nike

Possible Duplicate:
Getting Segmentation Fault

// reverse a string

#include`<stdlib.h>`
#include`<stdio.h>`
#include`<string.h>`
#include`<math.h>`
int main()
{

char *string = "mohit",t;
int i=0,j;
printf(" %d %d",strlen(string), (strlen(string)/2)+1);
for(i=0,j=(strlen(string)) ; i<(strlen(string)/2)+1 ; i++,j--)
{
printf("\n%d",(int) string);
printf("\n%d",(int) string+5);
printf("\ni string = %c", *(string + i));
printf("\nj string = %c", *(string + j));
t=*(string+i);
*(string+i) = *(string + j);
*(string + j) = t;
}
printf("\n = %s", string);
return 0;
}

最佳答案

字符串文字可能位于内存的只读区域;不允许将指向 1 的指针分配给指向非常量字符的指针,因此您对 string 的操作会导致未定义的行为。你要么说

const char * string = "mohit";

并且不要修改字符串,或者创建一个您可以修改的自动字符数组:

char string[] = "mohit";

后者是您的情况所需要的。

此外,作为一种风格,将 char * s, t; 写在一行中可能会产生误导;它相当于,并且应该总是被替换为 char * s; char t;.

关于c - 运行时错误 "Segmentation Fault"。如何去除它? (我在 Ubuntu 中工作。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7064003/

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