خدا چه میگی مهرگان سوالت مگه ای نیست که چجو از gets استفاده بکنی ؟
gets با cin.get خو فرق مکنه .
gets اصلا دیگه cin نمیخواد
تو الان سوالت چیه ؟
خو هر چی که میخوای با gets بگیر
کد:
#include <stdio.h> البته وقتی نیم اسپیس استاندارد رو یوز میکنی فکر کنم اینو نیاز نداره دیگه
int main()
{
char string [256];
printf ("Insert your full address: ");
gets (string);
printf ("Your address is: %s\n",string);
return 0
{
منتهی مشکل تکنیکی ای که وجود داره اینه که برنامه نویسها میگن از gets استفاده نکنین چون میتونه بافر اور فلو رخ بده و از این راه هکر ها خیلی سواستفاده میکنند
Function is intrinsically unsafe and should not be used
نقل قول:
Replace gets() with a C++ stream method that has a limit on the number of characters that will be read into the buffer (cin.getline(buffer, bufSize), for example).
If "buf" is a static buffer locally defined, bufSize can be replaced by sizeof(buffer). If malloc'd, use the malloc size.
|
Examples of Incorrect Code
کد:
char str1[10];
gets(str1);
/* If the string is more than 10 characters, the overflow will spill over into the adjoining memory. */
راه درستش
کد:
char str1[10];
fgets(str1, sizeof(str1), stdin);
/* Will not overflow.
Note that if buffer is malloc'd, sizeof() will not work and the malloc size should be used. */
/* In C++, use of iostream::getline() is preferred. */