额外的数字被追加到字符串,不知道为什么?

Bla*_*e G 0 c++ string

Number(string binary)
        {
            int raw_string_int[size];
            char raw_string_char[size];
            strcpy(raw_string_char,binary.c_str());
            printf("Raw String is %s",raw_string_char);

                for (int i=0;i<size;i++)
                {

                    raw_string_int[i] = int(raw_string_char[i]);
                    printf("%i\n",int(raw_string_char[i]));
                    if (raw_string_int[i] != 0 || raw_string_int[i] != 1)
                    {
                        printf("ERROR NOT A BINARY NUMBER\n");
                        exit(0);
                    }
                }
Run Code Online (Sandbox Code Playgroud)

嗨,我在命令提示符下输入0001作为二进制文件,但raw_string_char附加了两个额外的数字.任何人都可以向我解释为什么会这样吗?回车是作为字符引入的吗?

这是我在命令提示符下得到的内容:

./test
0001
Raw String is 000148
ERROR NOT A BINARY NUMBER
Run Code Online (Sandbox Code Playgroud)

Por*_*lus 9

你忘记了第一个printf中的"\n".48来自第二个printf,它是将第一个'0'(ASCII 0x30 = 48)转换为int的结果.

要将文本0或1转换为相应的整数,需要减去0x30.