C语言 求教! 急~~急~~
我们编写一个简单的聊天工具,现在实现了从客户端到服务器的对话,但是服务器把消息转发给制定用户还不知道怎么实现,请教哪位高手帮忙,不甚感激!只有30分了~~~~~是用C语言...
我们编写一个简单的聊天工具,现在实现了从客户端到服务器的对话,但是服务器把消息转发给制定用户还不知道怎么实现,请教哪位高手帮忙,不甚感激!只有30分了~~~~~
是用C语言实现哈,不能用JAVA 展开
是用C语言实现哈,不能用JAVA 展开
2011-07-05
展开全部
#include<stdio.h>
#include<stdlib.h>
void main( void ) //文件的最后一定要加 ~ , 因为我是把这个符号作为终止符的 , 两个文本文件 的最后 都要加
{
FILE * fp1 = NULL , * fp2 = NULL ;
int row = 0 , run_row = 0 , file2_run_row = 0 , file1_count = 0 , file2_count = 0 , i = 0 , line_count = 1 , temp_run_row = 0 ;
char file1_name[ 20 ] = , file2_name[ 20 ] = , acc_file1 = '0' , acc_file2 = '0' ;
char * file1 = NULL , * file2 = NULL ;
printf( "please input row :\n" ) ; // 输入你想要的列
scanf( "%d" , & row ) ;
printf( "please input file1_name and file2_name :\n" ) ; //输入你要读取的文件一与文件二名 , 比如 file1.txt file2.txt main.c
scanf( "%s%s" , file1_name , file2_name ) ; //中间一定要输入空格或者回车
printf( "\n" ) ;
if( NULL == ( fp1 = fopen( file1_name , "rb" ) ) )
{
printf( "can not open the file1\n" ) ;
exit( 0 ) ;
}
if( NULL == ( fp2 = fopen( file2_name , "rb" ) ) )
{
printf( "can not open the file2\n" ) ;
exit( 0 ) ;
}
run_row = ( row - 10 ) /2 ;
temp_run_row = run_row ;
file1 = ( char * )calloc( run_row , sizeof( char ) ) ;
file2 = ( char * )calloc( run_row , sizeof( char ) ) ;
file2_run_row = run_row + 5 ;
run_row -= 5 ;
while( '~' != acc_file1 || '~' != acc_file2 )
{
if( '~' != acc_file1 )
{
file1_count = 0 ;
while( '~' != ( acc_file1 = fgetc( fp1) ) )
{
if( '\r' == acc_file1 )
{
acc_file1 = fgetc( fp1) ;
file1[ file1_count ]= '\0' ;
break ;
}
file1[ file1_count ] = acc_file1 ;
file1_count ++ ;
if( 0 == file1_count % run_row )
{
break ;
}
}
if( '~' == acc_file1 )
{
file1[ file1_count ]= '\0' ;
}
printf( "%s" , file1 ) ;
for( i = 0 ; i < temp_run_row - file1_count +10 ; i ++ )
{
printf( " " ) ;
}
}
else
{
for( i = 0 ; i < temp_run_row + 10 ; i++ )
{
printf( " " ) ;
}
}
if( '~' != acc_file2 )
{
file2_count = 0 ;
while( '~' != ( acc_file2 = fgetc( fp2 ) ) )
{
if( '\r' == acc_file2 )
{
acc_file2 = fgetc( fp2 ) ;
file2[ file2_count ]= '\0' ;
break ;
}
file2[ file2_count ] = acc_file2 ;
file2_count ++ ;
if( 0 == file2_count % run_row )
{
break ;
}
}
if( '~' == acc_file2 )
{
file2[ file2_count ]= '\0' ;
}
printf( "%s" , file2 ) ;
for( i = 0 ; i < temp_run_row - file2_count ; i ++ )
{
printf( " " ) ;
}
}
else
{
for( i = 0 ; i < temp_run_row ; i ++ )
{
printf( " " ) ;
}
}
if( line_count < 10 )
{
printf( " %d " , line_count ) ;
}
else
{
printf( " %d " , line_count ) ;
}
putchar( 10 ) ;
line_count ++ ;
}
while( 1 ) ;
}
//把生成后的文件以及 你要同时查看的两个文件 放在同一个文件夹下 (一定要)
//visual studio 2005 测试通过 , 完美运行 , row( 列数 ) 最好在 160 比较好 , 可以查看中文txt格式文档 , 最好是读 txt小文件 。
//行数就没必要做限制了, 用鼠标就可以了
另外,站长团上有产品团购,便宜有保证
#include<stdlib.h>
void main( void ) //文件的最后一定要加 ~ , 因为我是把这个符号作为终止符的 , 两个文本文件 的最后 都要加
{
FILE * fp1 = NULL , * fp2 = NULL ;
int row = 0 , run_row = 0 , file2_run_row = 0 , file1_count = 0 , file2_count = 0 , i = 0 , line_count = 1 , temp_run_row = 0 ;
char file1_name[ 20 ] = , file2_name[ 20 ] = , acc_file1 = '0' , acc_file2 = '0' ;
char * file1 = NULL , * file2 = NULL ;
printf( "please input row :\n" ) ; // 输入你想要的列
scanf( "%d" , & row ) ;
printf( "please input file1_name and file2_name :\n" ) ; //输入你要读取的文件一与文件二名 , 比如 file1.txt file2.txt main.c
scanf( "%s%s" , file1_name , file2_name ) ; //中间一定要输入空格或者回车
printf( "\n" ) ;
if( NULL == ( fp1 = fopen( file1_name , "rb" ) ) )
{
printf( "can not open the file1\n" ) ;
exit( 0 ) ;
}
if( NULL == ( fp2 = fopen( file2_name , "rb" ) ) )
{
printf( "can not open the file2\n" ) ;
exit( 0 ) ;
}
run_row = ( row - 10 ) /2 ;
temp_run_row = run_row ;
file1 = ( char * )calloc( run_row , sizeof( char ) ) ;
file2 = ( char * )calloc( run_row , sizeof( char ) ) ;
file2_run_row = run_row + 5 ;
run_row -= 5 ;
while( '~' != acc_file1 || '~' != acc_file2 )
{
if( '~' != acc_file1 )
{
file1_count = 0 ;
while( '~' != ( acc_file1 = fgetc( fp1) ) )
{
if( '\r' == acc_file1 )
{
acc_file1 = fgetc( fp1) ;
file1[ file1_count ]= '\0' ;
break ;
}
file1[ file1_count ] = acc_file1 ;
file1_count ++ ;
if( 0 == file1_count % run_row )
{
break ;
}
}
if( '~' == acc_file1 )
{
file1[ file1_count ]= '\0' ;
}
printf( "%s" , file1 ) ;
for( i = 0 ; i < temp_run_row - file1_count +10 ; i ++ )
{
printf( " " ) ;
}
}
else
{
for( i = 0 ; i < temp_run_row + 10 ; i++ )
{
printf( " " ) ;
}
}
if( '~' != acc_file2 )
{
file2_count = 0 ;
while( '~' != ( acc_file2 = fgetc( fp2 ) ) )
{
if( '\r' == acc_file2 )
{
acc_file2 = fgetc( fp2 ) ;
file2[ file2_count ]= '\0' ;
break ;
}
file2[ file2_count ] = acc_file2 ;
file2_count ++ ;
if( 0 == file2_count % run_row )
{
break ;
}
}
if( '~' == acc_file2 )
{
file2[ file2_count ]= '\0' ;
}
printf( "%s" , file2 ) ;
for( i = 0 ; i < temp_run_row - file2_count ; i ++ )
{
printf( " " ) ;
}
}
else
{
for( i = 0 ; i < temp_run_row ; i ++ )
{
printf( " " ) ;
}
}
if( line_count < 10 )
{
printf( " %d " , line_count ) ;
}
else
{
printf( " %d " , line_count ) ;
}
putchar( 10 ) ;
line_count ++ ;
}
while( 1 ) ;
}
//把生成后的文件以及 你要同时查看的两个文件 放在同一个文件夹下 (一定要)
//visual studio 2005 测试通过 , 完美运行 , row( 列数 ) 最好在 160 比较好 , 可以查看中文txt格式文档 , 最好是读 txt小文件 。
//行数就没必要做限制了, 用鼠标就可以了
另外,站长团上有产品团购,便宜有保证
展开全部
#include<stdio.h>
#include<stdlib.h>
void main( void ) //文件的最后一定要加 ~ , 因为我是把这个符号作为终止符的 , 两个文本文件 的最后 都要加
{
FILE * fp1 = NULL , * fp2 = NULL ;
int row = 0 , run_row = 0 , file2_run_row = 0 , file1_count = 0 , file2_count = 0 , i = 0 , line_count = 1 , temp_run_row = 0 ;
char file1_name[ 20 ] = , file2_name[ 20 ] = , acc_file1 = '0' , acc_file2 = '0' ;
char * file1 = NULL , * file2 = NULL ;
printf( "please input row :\n" ) ; // 输入你想要的列
scanf( "%d" , & row ) ;
printf( "please input file1_name and file2_name :\n" ) ; //输入你要读取的文件一与文件二名 , 比如 file1.txt file2.txt main.c
scanf( "%s%s" , file1_name , file2_name ) ; //中间一定要输入空格或者回车
printf( "\n" ) ;
if( NULL == ( fp1 = fopen( file1_name , "rb" ) ) )
{
printf( "can not open the file1\n" ) ;
exit( 0 ) ;
}
if( NULL == ( fp2 = fopen( file2_name , "rb" ) ) )
{
printf( "can not open the file2\n" ) ;
exit( 0 ) ;
}
run_row = ( row - 10 ) /2 ;
temp_run_row = run_row ;
file1 = ( char * )calloc( run_row , sizeof( char ) ) ;
file2 = ( char * )calloc( run_row , sizeof( char ) ) ;
file2_run_row = run_row + 5 ;
run_row -= 5 ;
while( '~' != acc_file1 || '~' != acc_file2 )
{
if( '~' != acc_file1 )
{
file1_count = 0 ;
while( '~' != ( acc_file1 = fgetc( fp1) ) )
{
if( '\r' == acc_file1 )
{
acc_file1 = fgetc( fp1) ;
file1[ file1_count ]= '\0' ;
break ;
}
file1[ file1_count ] = acc_file1 ;
file1_count ++ ;
if( 0 == file1_count % run_row )
{
break ;
}
}
if( '~' == acc_file1 )
{
file1[ file1_count ]= '\0' ;
}
printf( "%s" , file1 ) ;
for( i = 0 ; i < temp_run_row - file1_count +10 ; i ++ )
{
printf( " " ) ;
}
}
else
{
for( i = 0 ; i < temp_run_row + 10 ; i++ )
{
printf( " " ) ;
}
}
if( '~' != acc_file2 )
{
file2_count = 0 ;
while( '~' != ( acc_file2 = fgetc( fp2 ) ) )
{
if( '\r' == acc_file2 )
{
acc_file2 = fgetc( fp2 ) ;
file2[ file2_count ]= '\0' ;
break ;
}
file2[ file2_count ] = acc_file2 ;
file2_count ++ ;
if( 0 == file2_count % run_row )
{
break ;
}
}
if( '~' == acc_file2 )
{
file2[ file2_count ]= '\0' ;
}
printf( "%s" , file2 ) ;
for( i = 0 ; i < temp_run_row - file2_count ; i ++ )
{
printf( " " ) ;
}
}
else
{
for( i = 0 ; i < temp_run_row ; i ++ )
{
printf( " " ) ;
}
}
if( line_count < 10 )
{
printf( " %d " , line_count ) ;
}
else
{
printf( " %d " , line_count ) ;
}
putchar( 10 ) ;
line_count ++ ;
}
while( 1 ) ;
}
#include<stdlib.h>
void main( void ) //文件的最后一定要加 ~ , 因为我是把这个符号作为终止符的 , 两个文本文件 的最后 都要加
{
FILE * fp1 = NULL , * fp2 = NULL ;
int row = 0 , run_row = 0 , file2_run_row = 0 , file1_count = 0 , file2_count = 0 , i = 0 , line_count = 1 , temp_run_row = 0 ;
char file1_name[ 20 ] = , file2_name[ 20 ] = , acc_file1 = '0' , acc_file2 = '0' ;
char * file1 = NULL , * file2 = NULL ;
printf( "please input row :\n" ) ; // 输入你想要的列
scanf( "%d" , & row ) ;
printf( "please input file1_name and file2_name :\n" ) ; //输入你要读取的文件一与文件二名 , 比如 file1.txt file2.txt main.c
scanf( "%s%s" , file1_name , file2_name ) ; //中间一定要输入空格或者回车
printf( "\n" ) ;
if( NULL == ( fp1 = fopen( file1_name , "rb" ) ) )
{
printf( "can not open the file1\n" ) ;
exit( 0 ) ;
}
if( NULL == ( fp2 = fopen( file2_name , "rb" ) ) )
{
printf( "can not open the file2\n" ) ;
exit( 0 ) ;
}
run_row = ( row - 10 ) /2 ;
temp_run_row = run_row ;
file1 = ( char * )calloc( run_row , sizeof( char ) ) ;
file2 = ( char * )calloc( run_row , sizeof( char ) ) ;
file2_run_row = run_row + 5 ;
run_row -= 5 ;
while( '~' != acc_file1 || '~' != acc_file2 )
{
if( '~' != acc_file1 )
{
file1_count = 0 ;
while( '~' != ( acc_file1 = fgetc( fp1) ) )
{
if( '\r' == acc_file1 )
{
acc_file1 = fgetc( fp1) ;
file1[ file1_count ]= '\0' ;
break ;
}
file1[ file1_count ] = acc_file1 ;
file1_count ++ ;
if( 0 == file1_count % run_row )
{
break ;
}
}
if( '~' == acc_file1 )
{
file1[ file1_count ]= '\0' ;
}
printf( "%s" , file1 ) ;
for( i = 0 ; i < temp_run_row - file1_count +10 ; i ++ )
{
printf( " " ) ;
}
}
else
{
for( i = 0 ; i < temp_run_row + 10 ; i++ )
{
printf( " " ) ;
}
}
if( '~' != acc_file2 )
{
file2_count = 0 ;
while( '~' != ( acc_file2 = fgetc( fp2 ) ) )
{
if( '\r' == acc_file2 )
{
acc_file2 = fgetc( fp2 ) ;
file2[ file2_count ]= '\0' ;
break ;
}
file2[ file2_count ] = acc_file2 ;
file2_count ++ ;
if( 0 == file2_count % run_row )
{
break ;
}
}
if( '~' == acc_file2 )
{
file2[ file2_count ]= '\0' ;
}
printf( "%s" , file2 ) ;
for( i = 0 ; i < temp_run_row - file2_count ; i ++ )
{
printf( " " ) ;
}
}
else
{
for( i = 0 ; i < temp_run_row ; i ++ )
{
printf( " " ) ;
}
}
if( line_count < 10 )
{
printf( " %d " , line_count ) ;
}
else
{
printf( " %d " , line_count ) ;
}
putchar( 10 ) ;
line_count ++ ;
}
while( 1 ) ;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
'0'<=c因为48<=65结果为1
1<='9'也就是1<=57结果为1
所以输出yes
如果按数学表达式来表示测试是否c处于'0'到'9'之间的话应该这样写:
if('0'<=c
&&
c<='9')
1<='9'也就是1<=57结果为1
所以输出yes
如果按数学表达式来表示测试是否c处于'0'到'9'之间的话应该这样写:
if('0'<=c
&&
c<='9')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我知道你为什么错了,你在这条语句上理解错误了if('0'<=c<='9')
这条语句。
if('0'<=c<='9')
这个是数学上表达式的表示方法,在c语言上的表示方法有些区别,在c语言上的表示方法是c>='0'&&c<='9',在这里肯定输出的yes,因为c的ASCII值是65,条件运算符的结合性是左结合,所以先比较c的值和'0'的值的大小(通过ASCII比较),c>='0'为真,所以运算的结果为1,1<='9'(也是比较ASCII值),为真,所以打印出yes。
谢谢!!!
这条语句。
if('0'<=c<='9')
这个是数学上表达式的表示方法,在c语言上的表示方法有些区别,在c语言上的表示方法是c>='0'&&c<='9',在这里肯定输出的yes,因为c的ASCII值是65,条件运算符的结合性是左结合,所以先比较c的值和'0'的值的大小(通过ASCII比较),c>='0'为真,所以运算的结果为1,1<='9'(也是比较ASCII值),为真,所以打印出yes。
谢谢!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询