当前位置: 技术问答>linux和unix
fgets 和scanf 、 C库函数 分割屏幕 聊天室
来源: 互联网 发布时间:2017-03-12
本文导语: 1.我已经用线程做好了,几天刚上CSDN,才来回复,请教另一个问题: 例子: int i; char buffer[array_size]; char send_buffer[array_size]; printf( "please input i n" ); scanf( "%d", &i ); printf(...
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 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就没问题了。
int c;
while ( ( c = getchar() ) != EOF && c != 'n' )
;
或者
scanf ( "%*[^n]" );
scanf ( "%*c" );
将缓冲区清空,第二个fgets就没问题了。