按位分量和分割故障

Segmentation fault in bitwise component sum

本文关键字:分割 故障 分量      更新时间:2023-10-16

所以我的实验室基本上是从cin中取出字符串,将其分成组件(进入其各种字符),然后使用位操作符对所有字符进行组件和。最后,打印出结果。这是我有的。

在输入第一个字符串后,我得到一个分段错误。

[EDIT]现在运行没有segFaults,但我得到的结果= 0,aInt = 0,和bInt = 0。不知道为什么?我输入了a = hello和b = world

using namespace std;
#include <iostream>
#include <stdio.h>                                                              
#include <stdlib.h> 
int main()
{
    string a, b;
    char *aStopstring, *bStopstring;
    unsigned long aInt, bInt;
    cout<<"Please enter a string: "<<endl;
    cin>> a;
    const char* aString = a.c_str();
    cout<<"Please enter another string: "<<endl;
    cin>> b;
    const char* bString = b.c_str();
    aInt = strtoul(aString, &aStopstring, 2);                                                       
    bInt = strtoul(bString, &bStopstring, 2); 
    cout<<aInt<< "     " << bInt<<endl;                               
    unsigned int c = aInt&bInt;
    unsigned int d = aInt^bInt;
    c = c>>1;
    unsigned int result = c^d;
    cout<<"The sum is: "<< (int)result <<endl;
    return 1;
}

没有分配aString和bString。

char* aString = new char[255];
char* bString = new char[255];

当你完成的时候,确保你删除了那些指针。

delete[] aString;
delete[] bString;
aString = 0x0;
bString = 0x0;

如果您不要求使用char*作为输入,您可以使用std::string(因此您不必担心为输入分配足够的空间),然后通过使用c_str()来处理std::字符串的底层字符缓冲区。

的例子:

std::string aString;
std::cin >> aString;
const char* buffer = aString.c_str();

在您第一次尝试将某些内容读入该变量之前添加语句,例如aString = new char[80];