如何从用户那里获取输入时摆脱缓冲区溢出?

问题描述 投票:0回答:1

如何从用户那里获取输入时摆脱缓冲区溢出?通过使用fgets还是scanf?如果fgets,那么它如何防止。初学者需要一些解释。

#include <stdio.h>
#include <stdlib.h>

int main(){
  char choice[5];
  char one='1', two='2', three='3';

  printf("%c. Create new account\n",one);
    printf("%c. Update information of existing account\n",two);
    printf("%c. For transactions\n",three);

  printf("Enter your choice: ");
  // fgets(choice, sizeof choice, stdin);      // This OR
  scanf("%s",choice);                          // This one
  printf("Here is your choice: %s", choice);

  return 0;
}
c function fgets
1个回答
0
投票

难道不是那么容易,但是您可以(不是100个安全的解决方案)通过在格式说明符前加上const文字或数字来限制scanf:

scanf("%3s", choice);
© www.soinside.com 2019 - 2024. All rights reserved.