使用* argv []的异常输出

时间:2017-10-26 03:57:47

标签: c++ argv

我试图将argv[]的字符串元素打印到控制台,但无论出于何种原因,我得到的输出都是废话。我的程序,测试回文,似乎正常工作。唯一关闭的部分是当我尝试将元素int argv[]输出到我刚刚测试为回文的控制台时。

以下是我的代码处理:

for (int i = 1; i < argc; i++) {
    string s(argv[i]);
    printf("s: %s\n",s);
    if (ignoreCase) {
        for (int j = 0; j < s.size(); j++) {
            tolower(s.at(j));
        }
    }
    if (ignoreSpaces) {
        s = removeSpaces(s);
    }
    if (isPalindrome(s, 0, s.size() - 1)) {
        printf("%s is a palindrome.\n",s);
    }
    else {
        printf("%s is not a palindrome.\n",s);
    }
}

以下是我得到的输出: enter image description here

1 个答案:

答案 0 :(得分:3)

由于您说您无法使用cout,因此您未正确使用printf。您使用printf的参数printf不知道(std::string),因此您的程序正在调用未定义的行为。

修复方法是使用printf知道的类型。由于std::string的{​​{1}}函数返回c_str(),因此请使用该函数。

所以不要使用这样的行:

const char *

这样做:

printf("s: %s\n",s);