0

我正在创建一个主函数来测试名为 mchar 的 C 函数的限制。mchar 将 char 作为参数。

int main ()
{
    mchar();
    mchar('A');
    mchar('\n');
    mchar('');
    mchar(NULL);
}

我正在尝试考虑所有可能调用该方法出错的用例。所有这些都可以正确调用吗?有没有我遗漏的用例?

4

2 回答 2

7

只有 256 个字符,因此您可以轻松地将其全部调用:

#include <limits.h>

int main(void)
{
    for (int c = CHAR_MIN; c <= CHAR_MAX; ++c) {
        mchar(c);
    }

    return 0;
}

如果您特别想测试“有趣”的角色,那么您可以尝试这些角色。

mchar('\'');    // Single quote
mchar('"');     // Double quote
mchar('\\');    // Backslash

mchar(' ');     // Space
mchar('\t');    // Tab
mchar('\n');    // Line feed
mchar('\r');    // Carriage return

mchar('\0');    // NUL
mchar('\b');    // Backspace
mchar('\f');    // Form feed
mchar('\v');    // Vertical tab
mchar('\a');    // Bell (alert)
于 2013-01-25T03:42:44.170 回答
0

关于你的问题

所有这些都可以正确调用吗?

首先

mchar('A');
mchar('\n');

这里 'A' , '\n' 是有效字符。所以这将正常工作

mchar('');

是非法的并且会给出编译时错误。例如:对于 gcc,显示的错误是 空字符常量。

mchar();

也是非法的,因为该函数需要 achar作为参数,但您没有传递任何参数。您将收到一个编译时错误(类似于“函数的参数太少”)。

mchar(NULL);

将在正常情况下编译(好吧,如果您没有设置任何严格的编译器标志集),但会发出警告。

警告:指向整数转换的不兼容指针将“void *”传递给“char”类型的参数;

于 2013-01-25T03:42:54.650 回答