C言語gets関数の欠陥を克服する方法の初探査

2105 ワード

  C  gets         

 

  gets    

gets   C     stdin          。gets                        。   :

char* gets(char *buff);

  :

#include <stdio.h>

int main()

{

      charstr[30];

      while(!str!= gets(str));

      printf(“%s
”,str); return 0; } ,gets str , , 。 gets gets , buf , gets 。 , 1111111111111111……………. 1 30, 。 gets Gets char* Gets(int maxlen) , , char* , int main() { char*p; p=Gets(18); } Gets , , , 。 Gets char* const Gets(char* const array,int maxlen); , int main() { charstr[20]; Gets(str,20); return 0; } Gets char* const , , , char str[30] str[0]=’1’, str++ 。 : #include <string.h> #include <stdio.h> #include <conio.h>   #include <stdlib.h>  #include <io.h> char* Gets(int maxlen) // maxlen , { int i; staticchar* str; char c; str=(char*)malloc(sizeof(char)*maxlen); if(!str) { perror("memeoryallocation error!
"); return0; } else { for(i=0;i<maxlen;i++) { c=getchar(); if(c!='
')str[i]=c; elsebreak; } str[i]='\0'; returnstr; } } char* const Gets(char* const array,int maxlen) { int i; char c; for(i=0;i<maxlen;i++) { c=getchar(); if(c!='
')array[i]=c; elsebreak; } array[i]='\0'; returnarray; } int main() { char s[8]; Gets(s,8); puts(s); fflush(stdin); // , , Gets char*p=Gets(8); puts(p); return 0; }