作者:手机用户2502941293 | 来源:互联网 | 2023-05-19 07:37
我正在尝试创建一个获取字符串的函数,通过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
问题是当我尝试在此函数中使用"printf"时,试图查看输入是否正确,它显示奇怪的字符,而不是我插入的字符.我不知道我错过了什么.
非常感谢.
1> Jonathon Rei..:
这应该是一个反斜杠:
S[i] = '\0';
确保您的编译器警告已打开,并且您正在关注它们.'/0'
是一个非标准的多字符整数文字.
反斜杠零'\ 0'是您追求的C字符串NUL终止符.
此外,如果输入大于dim
,则超出缓冲区,写入比分配的字节多一个字节.我建议分配dim+1
字节.
最后,没有必要乘以sizeof(char)
- 按定义它是1.
PS Now是学习如何使用调试器的绝佳时机.如果你正在使用GNU工具:gcc -Wall -Werror main.c
那么gdb a.out
,输入r来运行.
他也没有为那个角色分配空间.