zoukankan      html  css  js  c++  java
  • 关于setbuf()缓存的设置 fgets()读入一行字符串

    /*输入:2
      12345
      abcde
      希望输出:
      0:12345
      1:abcde
    */
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main( void )
    {
            char **instr, **p;
            int i, j;
     
            printf( "num: " );
            scanf( "%d", &j );//不能有"\n"
            if( !j )
                 return 0;
    //fflush( stdin );       // 论坛上讲用fflush()  或 setbuf()都能达到同样的结果,但我用fflush()没有实现.
    setbuf(stdin,NULL);
            instr = (char **)malloc( sizeof(char *) * j );
            if( !instr )
                   return 1;
            memset( instr, 0, sizeof(char *) * j );
            for( i = 0, p = instr; i < j; i++ )
            {
                   printf( "i=%d:", i );
                   *p = (char *)malloc( sizeof(char) * 80 );
                   if( !*p )
                          return 1;
                  fgets( *p,80,stdin );//从标准输入读入一行字符串,包括回车换行符"\n"
                    (*p)[strlen(*p)-1] = '\0';
                    *p++;
            }
     
            for( i = 0, p = instr; i < j; i++ )
            {
                    printf( "%d: %s\n", i, *p );
                    free( *p++ );
            }
            free( instr );
            return 0;
    }
  • 相关阅读:
    170322操作系统定义、功能、位置与历史
    java 多线程
    java 网络编程TCP程序设计
    java 事件处理机制
    java GUI编程
    170321php3第4章 PHP5的基本语法+作业九九乘法表
    170320网络编程 udpclient udpGroupClient
    二叉树线索化
    哈希表
    二叉搜索树
  • 原文地址:https://www.cnblogs.com/daniel/p/52546.html
Copyright © 2011-2022 走看看