初学者的 scanf_s() 缺陷
int main(void) {
char tmp, arr[100];
int i, k;
printf("Enter a string: ");
scanf_s("%s", arr);
for ( k = 0, i = (strlen(arr) - 1); k < (int) (strlen(arr) / 2); --i, ++k) {
tmp = arr[k];
arr[k] = arr[i];
arr[i] = tmp;
}
puts(arr);
return 0;
}
我知道 scanf_s() 有一些奇怪的地方,但我无法解决这个问题。 我的代码使用 scanf() 效果很好,但这不会反转数组的元素:( 任何帮助将不胜感激。 谢谢。
int main(void) {
char tmp, arr[100];
int i, k;
printf("Enter a string: ");
scanf_s("%s", arr);
for ( k = 0, i = (strlen(arr) - 1); k < (int) (strlen(arr) / 2); --i, ++k) {
tmp = arr[k];
arr[k] = arr[i];
arr[i] = tmp;
}
puts(arr);
return 0;
}
I know that there is something weird about scanf_s() but I could NOT resolve the issue.
My code works well by using scanf() but this does NOT reverse the elements of the array :(
Any help will be strongly appreciated.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
scanf_s 要求以字符为单位的缓冲区大小作为第二个参数传递。
您还可以传递宽度说明符。 如果通过并且它不适合缓冲区,您将只有第一个“指定宽度”字符。
scanf_s requires the buffer size in chars to be passed as the second parameter.
You can also pass a width specifier. If passed and it does not fit into the buffer you will have only the first 'width specified' chars.