C中的字符数组

Mau*_*uri -1 c arrays string input char

我正在尝试创建一个获取字符串的函数,通过char获取char:

char * GetString (int dim) // dim is the size of the string
{
    char c, *S;
    int i = 0;

    S = (char*)malloc(dim*(sizeof(char));

    while ((c=getchar() != '\n') && (i < dim) && (c != EOF))
    {
        S[i] = c;
        i++;
    }

    S[i] = '/0';

    return S;
}
Run Code Online (Sandbox Code Playgroud)

问题是当我尝试在此函数中使用"printf"时,试图查看输入是否正确,它显示奇怪的字符,而不是我插入的字符.我不知道我错过了什么.

非常感谢.

Jon*_*art 6

这应该是一个反斜杠:

S[i] = '\0';
Run Code Online (Sandbox Code Playgroud)

确保您的编译器警告已打开,并且您正在关注它们.'/0'是一个非标准的多字符整数文字.

反斜杠零'\ 0'是您追求的C字符串NUL终止符.

此外,如果输入大于dim,则超出缓冲区,写入比分配的字节多一个字节.我建议分配dim+1字节.

最后,没有必要乘以sizeof(char)- 按定义它是1.

PS Now是学习如何使用调试器的绝佳时机.如果你正在使用GNU工具:gcc -Wall -Werror main.c那么gdb a.out,输入r来运行.

  • 他也没有为那个角色分配空间. (5认同)