相关疑难解决方法(0)

附加两个字符时的分段错误 - C++

我试图附加两个字符但由于某种原因我得到了一个分段错误.

我的代码就像;

#include <string.h>
char *one = (char*)("one");
char *two = (char*)("two");

strcat(one, two);
Run Code Online (Sandbox Code Playgroud)

而且我似乎遇到了分段错误strcat(one, two),为什么会这样?

c++ linux append segmentation-fault chars

1
推荐指数
1
解决办法
1089
查看次数

尝试设置char数组的字符时程序崩溃

我得到了我的程序这种奇怪的行为,我无法弄清楚.我的教授在我的程序中向我展示了一个缺陷,我只是在构造一个对象时复制一个char指针,而不是制作整个数组的新副本,所以你可以随意使用它.他用类似的代码证明了这一点.

对于代码:

char sweat[] ="Sweater";
warenkorb = new WareImKorb(new Textil (205366,4.2,sweat,40),2,warenkorb);
sweat[0] = '\0';
Run Code Online (Sandbox Code Playgroud)

现在,如果我改为:

char* sweat ="Sweater";
Run Code Online (Sandbox Code Playgroud)

该程序运行良好,直到我尝试汗[0] ='\ 0'; 它只是简单的.

然而,这有效:char cc [] ="Sweater"; char*sweat = cc;

它真的很烦我,我不明白,为什么版本1不起作用.希望你们能帮助我,否则我会疯狂地想知道这件事.

c++ char

1
推荐指数
1
解决办法
1443
查看次数

C++交换字符串

我正在尝试创建一个非递归方法来交换c风格的字符串.它在Swap方法中抛出异常.无法弄清楚问题.

void Swap(char *a, char* b)
{
    char temp;
    temp = *a;
    *a = *b;
    *b = temp;
}
void Reverse_String(char * str, int length)
{
    for(int i=0 ; i <= length/2; i++)  //do till the middle
    {
        Swap(str+i, str+length - i);

    }

}
Run Code Online (Sandbox Code Playgroud)

编辑:我知道有更好的方法来做到这一点.但是因为我正在学习,想知道代码的问题.

c++

1
推荐指数
1
解决办法
2032
查看次数

通过指针更改C中的字符串文字?

可能重复:
为什么在写入字符串时会出现分段错误?

我有以下程序:

char *s     = "abcdf";
char s1[50] = "abcdf";

s1[0] = 'Q';   // Line 1
s[0] = 'P';    // Line 2
Run Code Online (Sandbox Code Playgroud)

为什么Line 1工作正常并Line 2导致程序崩溃?

c string

1
推荐指数
1
解决办法
2400
查看次数

这段代码中的指针错误是什么?

我试图理解指针,这是我正在尝试实施的K&R程序.该程序是strcpy与KR的代码.

/*strcpy: copy t to s; pointer version 3*/
void strcpy(char *s, char *t){

while(*s++ = *t++)     
    ;              
}
Run Code Online (Sandbox Code Playgroud)

所以为了实现这个程序,我补充道

#include<stdio.h>
int main(){

    char *s="abc", *t="ABC" ;

    strcpy(s,t);
    printf("%s\n",t);

    printf("%s\n", s);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,我收到分段错误.我确信我错过了一些东西,但不太确定是什么.

谢谢!

c string pointers

1
推荐指数
2
解决办法
119
查看次数

分段写入字符串时出错

我正在尝试编写就地反向函数并且几乎完全遵循在线代码,但运行以下程序会引发总线错误.我是否将错误的参数传递给reverse()?

void reverse(char *str) {
    char * end = str;
    char tmp;
    if (str) {
        while (*end) {
            ++end;
        }
        --end;
        while (str < end) {
            tmp = *str;
            *str++ = *end;
            *end-- = tmp;
        }
    }
}

int main() {
    char *s = "sample";
    reverse(s);
    printf("%s\n");
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

c memory reverse pointers

1
推荐指数
1
解决办法
1592
查看次数

何时发生段错误?

我有以下代码:

char* str = "01248";
printf("%x \n", str[str[1] + str[3]]);
Run Code Online (Sandbox Code Playgroud)

因为str[1]+str[3] = 101,代码寻找str [101].

这段代码会(总是)得到分段错误错误吗?或者我们在这个地址有变化,我们会打印一些东西?

c segmentation-fault

1
推荐指数
1
解决办法
118
查看次数

分配c-string的元素

我正在尝试对c-string进行冒泡排序 - 请参阅下面的函数.目的是根据ASCII码对字符进行排序.

编译器在运行时不会抱怨,此时我会遇到分段错误.我运行了gdb,程序运行正常,直到第12行.在第12行,gdb调试器声明'Process gdb-inferior killed'.

为什么第12行不正确?我在程序的其他地方遇到过这个问题 - 无法将字符分配给c字符串的元素.我知道strcpy()需要字符串赋值,但是对于特定的元素,我认为它没问题.任何帮助很多人赞赏.

    1. void bubblesort(char *str)
    2. {
    3.   int length = strlen(str);
    4.
    5.   for (int i = length - 1; i > 0; i--)
    6.     {
    7.       for (int j = 0; j < i; j++)
    8.         {
    9.           if (str[j] > str[j + 1])
    10.            {
    11.              char temp = str[j + 1];
    12.              str[j + 1] = str[j];
    13.              str[j] = temp;
    14.            }
    15.         }
    16.     }
    17. …
Run Code Online (Sandbox Code Playgroud)

c element c-strings variable-assignment bubble-sort

1
推荐指数
1
解决办法
57
查看次数

如何在C中的字符串末尾添加"\n"

我知道怎么在字符串上做,所以"hello world""hello world\n".但是,如果我有类似的东西char *str = "helloworld".,我想在str的末尾添加\n,我该怎么做呢?

c arrays string char

1
推荐指数
1
解决办法
3818
查看次数

我在这里使用字符串时会出现分段错误吗?

我编写了以下replace函数来替换大字符串中的子字符串,如下所示:

void replace(char *str1, char *str2, int start, int end)
{
    int i,j=0;
    for(i=start; i<end; i++, j++)
        *(str1+i)=*(str2+j);
}
Run Code Online (Sandbox Code Playgroud)

当我把一个字符串作为时它工作正常replace("Move a mountain", "card", 0,4),但是当我使用指针数组声明一个字符串char *list[1]={"Move a mountain"}并将其传递给函数时replace(list[0], "card",0,4),它给了我一个分段错误.

无法搞清楚.有人可以向我解释一下吗?

c pointers

1
推荐指数
1
解决办法
73
查看次数