易截截图软件、单文件、免安装、纯绿色、仅160KB

simply web server by unix c program

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/wait.h>
#define QLEN 20
#define APPLY_HEAD "HTTP/1.1 200 OK\r\nContent-Type: "
#define IMG "image/jpg"
#define TEXT "text/html"
#define APPLY_END "\r\n\r\n"
typedef struct
{
in_port_t port;
char root[1024];
} cnf_t;
void err_sys (char *str) { perror (str); exit (1); }
cnf_t * config (cnf_t * arg)
{
FILE *fp;
char buf[1024];
char *p;
static cnf_t backup;
if (NULL == arg)
arg = &backup;
fp = fopen ("config.ini", "r");
if (fp == NULL)
err_sys ("fail to fopen");
fgets (buf, 1024, fp);
p = strstr (buf, "=");
arg->port = atoi (p + 1);
fgets (buf, 1024, fp);
p = strstr (buf, "=");
strcpy (arg->root, p + 1);
arg->root[strlen (arg->root) - 1] = '\0';
fclose (fp);
return arg;
}
int socket_init (in_port_t port)
{
int lfd, n;
struct sockaddr_in serv_addr;
lfd = socket (AF_INET, SOCK_STREAM, 0);
if (lfd == -1)
err_sys ("fail to socket");
bzero (&serv_addr, sizeof (serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons (port);
inet_pton (AF_INET, "192.168.0.18", &serv_addr.sin_addr.s_addr);
n = bind (lfd, (struct sockaddr *) &serv_addr, sizeof (serv_addr));
if (n == -1)
err_sys ("fail to bind");
n = listen (lfd, QLEN);
if (n == -1)
err_sys ("fail to listen");
return lfd;
}
char *get_path(int cfd, const char *root)
{
char *path; int n;
char *p, *q, *filename;
char buf[1024];
path = (char *)malloc(sizeof(char) * 1024); //or static char path[1024];
if (NULL == path) err_sys("fail to malloc ");
n = read (cfd, buf, 1024);
buf[n]


相关文档:

C的scanf()

好久没上来了...有点对不起自己的良心...
话说这段时间快给这个函数搞死了...
我找找...我找我找...我就是要把它给搞明白了...
话说前段时间那个死人四则运算也把自己搞得半死了...额...现在还在停工状态...晕死....
再说scanf(),上网是可以找到些东西....但是都不怎么明白...打算自己搞明白了再上来写个详细点的吧... ......

ubuntu安装c/c++集成开发环境

首先确保系统已经安装了gcc/g++
1> Anjuta
打开终端:
命令:sudo apt-get install anjuta
(不能安装的需要添加安装源
添加源:点击主菜单上的“系统”》“系统管理”》“软件源”,输入密码后,在出现的对话框中点“第三方软件”,
“deb http://anjuta.org.sixxs. ......

o ra c le 安装

 检查内核参数
正在检查 semmsl=250; 已发现 semmsl=250。 通过
正在检查 semmns=32000; 已发现 semmns=32000。 通过
正在检查 semopm=100; 已发现 semopm=32。 失败 <<<<
正在检查 semmni=128; 已发现 semmni=128。 通过
正在检查 shmmax=536870912; 已发现 shmmax=33554432。 失败 <<<< ......

C函数指针总结

本文仅限于C,主要自己老忘。别的废话少说。
1.Basic
首先考虑函数在函数体内的定义,如下: 
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
 int add(int,int); 
 int def(int, int);
 printf("%d\n", add(1,3));
 printf("%d\n", def(3,1));
  ......

求解n阶Hanoi塔问题的c函数

#include <stdio.h>
int Count=0;
void move(char x,int n,char z){
 printf(" %d. disk %d: %c => %c\n",++Count,n,x,z);
}//move
// 将塔座x上按直径由小到大且自上而下编号为1至n的n个圆盘按规则搬到塔座z上,y可用作辅助塔座
void Hanoi(int n,char x,char y,char z){
 if (n==1) move(x,1,z ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号