函数在任何输入时返回0

时间:2017-07-29 19:39:32

标签: c++

我的一些C ++代码(find.cpp)应该在字符序列的末尾取两个数字并将它们打印为整数。

find.cpp:

#include <iostream>
#include "find_num.h"

int main() {
    char test[6] = { 't', 'e', 's', 't', '4', '2' };

    std::cout << find_num(test) << std::endl;
}

find_num.h:

#include <sstream>

int find_num(char char_in[]) {
    char char_out[2];
    int out;

    for (int i = 0, end = true; end!=false; i++) {
        if (char_in[i] == 0) {
            for (int j = 0; j < 2; j++) {
                char_out[j] = char_in[i - 2 + j];
            }
            std::stringstream(char_out) >> out;
            end = false;
        }
    }

    return out;
}

出于某种原因,当我编译并运行find.cpp时,它总是打印0,虽然我希望它打印42.如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:3)

此字符串:

   char test[6] = { 't', 'e', 's', 't', '4', '2' };

不会以空值终止。你想要:

   char test[7] = { 't', 'e', 's', 't', '4', '2', 0 };

或更好:

   char test[] = "test42";