日期:2014-05-16  浏览次数:20634 次

fgets 和scanf 、 C库函数 分割屏幕 聊天室
1.我已经用线程做好了,几天刚上CSDN,才来回复,请教另一个问题:
 例子:
  int i;
  char buffer[array_size];
  char send_buffer[array_size];
  printf( "please input i \n" );
  scanf( "%d", &i );
  printf( "please input the information you want to send:\n" );
  scanf( "%s", buffer );
  //fgets( buffer, array_size, stdin );

  //格式化处理
  sprintf( send_buff, "%d:%s", i, buffer );
   
我的目的是输入一个整型i, 和一串字符串(可能带空格), 然后格式化到 send_buffer 数组里面。
如果使用scanf输入,因为他不能接收空格,所以第一个空格后面的字符串会全部跳过,不能格式化到数组里。
如果用fgets, 在上面已经输入完i以后,空格貌似会送给fgets,直接跳过,不接收输入。

这样的问题我应该怎么解决?几天一直没办法解决。
2. C当中有没有库可以做滚屏的?分割屏幕的库?curses可以? 我想把聊天室分上下屏幕,做成上面是在线用户列表,下面是聊天记录,互不影响。
请指教。。

------解决方案--------------------
第一个问题忘了,你只要用
int c;
while ( ( c = getchar() ) != EOF && c != '\n' )
;
或者
scanf ( "%*[^\n]" );
scanf ( "%*c" );
将缓冲区清空,第二个fgets就没问题了。