见者有份,一起来理解一下这个C程序

direren 2010-10-13 04:33:33
#include <string.h>
#include <stdio.h>
#include <sys/types.h>

#ifndef PORT
#define PORT 3000
#endif

u_short PORT_NUMBER = PORT;

int run_help(char *res, char *buffer, int *i_ptr);

#define BUFFER_SIZE 80
#define RES_SIZE 300
#define EXIT_CMD "exit"

void run() {

char buffer[BUFFER_SIZE];

int i = 0;
char res[RES_SIZE];

while (i < RES_SIZE) {
if (!run_help(res, buffer, &i)) break;
}

res[i+1] = 0;
printf(res);
printf("\n\n");

}

int run_help(char *res, char *buffer, int *i_ptr) {

fgets(buffer, BUFFER_SIZE, stdin);

// code to get rid of newlines and other stuff at end of string
int wordlen = strlen(buffer);
if (buffer[wordlen - 2] == 13) {
buffer[wordlen - 2] = 0;
wordlen -= 2;
}
else if (buffer[wordlen - 1] == 10) {
buffer[wordlen - 1] = 0;
wordlen -= 1;
}

if (strcmp(buffer, EXIT_CMD) == 0) return 0;

int j = 0;
while (j < wordlen) {
res[*i_ptr] = buffer[j];
(*i_ptr)++;
j++;
}
return 1;
}


都来看看呀
...全文
355 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxbb 2010-10-14
  • 打赏
  • 举报
回复
關注~~~~~~~
pockyzhang2 2010-10-14
  • 打赏
  • 举报
回复
被lz召唤来了
kaysondong 2010-10-14
  • 打赏
  • 举报
回复
是红色代码不理解?
An4Greenhand 2010-10-14
  • 打赏
  • 举报
回复
don't know
jgdksdf 2010-10-14
  • 打赏
  • 举报
回复
看看 学习学习
jobszheng5 2010-10-14
  • 打赏
  • 举报
回复
我也来拿分了
zhaoqq921711784 2010-10-14
  • 打赏
  • 举报
回复
没看懂
jerry008008 2010-10-14
  • 打赏
  • 举报
回复
来看看 看看别人的解
huangbo0603 2010-10-14
  • 打赏
  • 举报
回复
学习学习!!!
evoloyeu 2010-10-14
  • 打赏
  • 举报
回复
过来瞧瞧
黎翔 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 bobo364 的回复:]

代码分析下来,是两个串,一个全部复制到另一个的指定开始位置
C/C++ code
#include <string.h>
#include <stdio.h>
#include <sys/types.h>

#ifndef PORT
#define PORT 3000
#endif

u_short PORT_NUMBER=PORT;

int run_help(char *res,char……
[/Quote]

问题能再说清楚点吗?
zherowolf 2010-10-14
  • 打赏
  • 举报
回复
vc++上编译不过?随便给点分吧
simble2010 2010-10-14
  • 打赏
  • 举报
回复
我是来领分的 一分也行
旭子 2010-10-14
  • 打赏
  • 举报
回复
leihelin5201314 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 pbdwadr 的回复:]

把所有输入连接在一起,最后输出

输入exit表示输入结束

比如,输入:
1
2
3
4
5
abcde
fg
exit

最终将得到:
12345abcdefg
[/Quote]
······
  • 打赏
  • 举报
回复
40分不够分!
xspace_time 2010-10-14
  • 打赏
  • 举报
回复
res(reset)表示重置缓冲区大小
stdin在stdio.h中定义为#define stdin (&_streams[0]),指向缓冲区
PORT_NUMBER 是端口号
BUFFER_SIZE 是缓冲区大小
wordlen是数据包数量
ptr(personal string)自身指针
ww884203 2010-10-13
  • 打赏
  • 举报
回复
打酱油
某某9 2010-10-13
  • 打赏
  • 举报
回复
LZ应该把问题讲清楚
evoloyeu 2010-10-13
  • 打赏
  • 举报
回复
来也呵呵呵
加载更多回复(12)

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧