我对某些事情感到困惑。我的印象是,使用读取C字符串的正确方法scanf()
遵循
(不要介意可能的缓冲区溢出,这只是一个简单的示例)
char string[256];
scanf( "%s" , string );
但是,以下似乎也可以工作,
scanf( "%s" , &string );
这仅仅是我的编译器(gcc),纯粹的运气还是其他?
在第二种情况下,实际上根本没有可能的缓冲区溢出,因为您根本没有使用该缓冲区。要么,要么您可以说任何大于3个字符的字符串都将溢出您的“缓冲区”。
—
TED
我指的是第一个例子。另外,其他人已经指出了这里发生的事情。
—
阿贝尔
对。尝试了一下,加雷斯(Gareth)是对的。奇怪的。
—
TED
由于此问题是通过搜索“如何使用scanf读取字符串”返回的,因此可能应该指出,该问题是关于将指针传递到的缓冲区的
—
Arkku '18年
scanf
,并且问题和接受的答案都集中在,并省略了在实际代码中应使用的对最大输入长度的至关重要的限制(但此问题不重要)。