① 怎样用c语言建网站
c语言是编写程序用的,些网页要用网页的脚本去写或者用制作网页的软件如微软的frontpage
② 用C语言怎么建设网站
C是结构化语言,不是描述语言。建网站一般要学习HTML+(php,asp,javascript)+css,这些语言,加上一些怎么往服务器上面挂之类的知识。或者找一点讲XAMPP的资料来做会更容易上手~~
③ 怎么用C开发网站
css语言
④ c语言如何向网站提交信息(有没有像html的post的提交方式)最好给个例子
用socket,建立一个socket连接,按HTTP协议的要求发送过去一个POST请求字符串就行了。
下面是一段搜来的代码:
#include <stdio.h>
#include "winsock.h"
#pragma comment(lib,"ws2_32.lib")
#define winsock_version 0x0101
void main()
{
//If it works,it is written by masterz,otherwise I don't know who write it.
SOCKADDR_IN saServer;
LPHOSTENT lphostent;
WSADATA wsadata;
SOCKET hsocket;
int nRet;
const char* host_name="www.csdn.net";
char* req="POST /member/logon.asp HTTP/1.0\r\n"
"From: local\r\n"
"User-Agent: post_test/1.0\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"Content-Length: 34\r\n\r\n"
"name=XXXXXX&pass=XXXXXXXXX&type=1"; //if you change xxx, you may have to change content-length correspondingly
if(WSAStartup(winsock_version,&wsadata))
printf("can't initial socket");
lphostent=gethostbyname(host_name);
if(lphostent==NULL)
printf("lphostent is null");
hsocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
saServer.sin_family = AF_INET;
// Use def. now, need to handle general case
saServer.sin_port = htons(80);
saServer.sin_addr = *((LPIN_ADDR)*lphostent->h_addr_list);
nRet = connect(hsocket, (LPSOCKADDR)&saServer, sizeof(SOCKADDR_IN));
if (nRet == SOCKET_ERROR)
{
printf("can't connect");
closesocket(hsocket);
return;
}
else
printf("connected with %s\n",host_name);
nRet = send(hsocket, req, strlen(req), 0);
if (nRet == SOCKET_ERROR)
{
printf("send() failed");
closesocket(hsocket);
}
else
printf("send() OK\n");
char dest[1000];
nRet=1;
while(nRet>0)
{
nRet=recv(hsocket,(LPSTR)dest,sizeof(dest),0);
if(nRet>0)
dest[nRet]=0;
else
dest[0]=0;
printf("\nReceived bytes:%d\n",nRet);
printf("Result:\n%s",dest);
}
}
⑤ 用c语言写一个网站给点思路
现在没有拿C语言写网站的,可以拿C写一个web服务器。
早期的时候,有C语言的网站,说白了就是,一个exe程序,输入是用户提交的请求,输出是网页,输出目标是远程的浏览器,这样子的。
⑥ C语言可以开发网站
c多用于系统软件的开发
网页语言是html(超文本标记语言,是WWW的描述语言)。
里面有各种标记符号,通过不同的代码显示不同的文字、图片、影像等
你得学习这个
还有javascript,这是脚本语言,能给网页加入各种扩展功能,很强大
制作人员常用的网页制作工具是dreamweaver
通过它能写出各种网页代码
你要买书的话就买有这个名字的书
没什么好坏之分因为内容大致都一样
你想学得详细一点就挑厚的买
大致了解的话就买薄的
上面介绍了各种网页效果的实现方法
不过我不建议买书,到网上搜索“网页制作教程”,你会有意想不到的收获
就看自己怎么学了
C语言之类的和网页制作没多大关系,它们只是基础,
只是javascript和java里面用到它的基本思想
开始的时候你就学习上面的静态网页制作
等基本熟练了后就可以发展到动态
现在市场上流行三种语言
asp/php/jsp
作为网站开发人员最好都熟悉
至少要精通一门
推荐asp
因为现在大多网页都用的这个
你学的java是jsp的基础
只在一些大型的网站和公司用到
⑦ 简单的C语言编程,可以做网站吗简单的
C语言是以它的高效性着称的,一般使用在嵌入式等对系统高效性要求比较高的系统当中,也会用它来写一些window或者linux下的应用。但是它不能做网站,现在流行的做网站项目的语言是C#和java,php等等。
⑧ c语言如何向网站提交信息(有没有像html的get的提交方式)最好给个例子
之前使用过PHP的Simple HTML DOM简单地解析HTML但PHP终非我所熟悉的语言,虽然我并不对语言抱有绝对的执着= =(什么你不相信,好吧,不管你信不信,反正我是信了= =)。虽然可以简单地使用正则表达式来解析HTML但我不是希望能够找到一个合适的HTML解析库,网上搜索了下关于c语言解析HTML的库,好像不是挻多的样子,我搜索到了google的gumbo,
gumbo是开源的,可以从这里得到它
https://github.com/google/gumbo-parser
我们需要下载回来手动编译安装,这里以linux debian为例
git clone https://github.com/google/gumbo-parser
cd gumbo-parser
./autogen.sh
./configure
这些一般都会非常顺利,没什么好说的,接下来就是
make
我要执行make后发现有一个错误导致无法编译通过,不知道各位是什么情况,给出的错误提示是benchmarks/benchmark.cc
文件中使用了未定义的函数clock_gettime
man了一下,该函数需要包含time.h头文件,打开benchmark.cc文件查看的确已经包含了time.h头文件,很苦恼,突然一下子就懵了,不过还好我反应还算快,看到manpages中写到
Link with -lrt (only for glibc versions before 2.17).
于是猜测没有链接库,使用vim打开Makefile文件,这个文件内容太多= =,要分析的话有些费劲,不过机智的我还是很快地通过benchmark关键字定位到了benchmark_LDADD这个变量,然后在后面加上
-lrt
注意有空格
再次make,果然成功了。。。。。。。。。。。
编译完成之后就可以使用make install进行安装了,你可能需要使用root用户权限,因为默认的安装目录在/usr/local/下
gumbo的源码提供了几个示例程序,一个c语言写的获取标题的源码和另外三个使用c++编写的代码,我全都看了(你看,我说过我不是绝对的语言执着者吧,很不幸,这些程序我都看懂了= =)
简单地说gumbo的使用很简单,使用gumbo_parse或者gumbo_parse_with_options就可以得到一个GumboOutput数据结构,我们就可以从该结构中寻找我们想要的东西了。
我们先来看一个简单的例子,就拿获取title来说吧,我决定用自己写的解析代码而不是gumbo源码提供的好个示例,因为我发现该程序无法解析出我使用的示例HTML文本文件= =,所以我就自己写个吧。。。。。。
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <string.h>
/* 包含头文件 */
#include <gumbo.h>
void get_title(GumboNode *node)
{
GumboVector *children;
int i;
/* 如果当前节点不是一个元素的话直接返回 */
if(node->type != GUMBO_NODE_ELEMENT) return;
/* 获取该节点的所有子元素节点 */
children=&node->v.element.children;
/* 检查当前节点的标签是否为TITLE(title)
* 如果是则输出该节点下第一个节点的文本内容 */
if(node->v.element.tag == GUMBO_TAG_TITLE)
printf("%s\n",((GumboNode *)children->data[0])->v.text.text);
/* 递归该节点下的所有子节点 */
for(i=0;i < children->length;++i)
get_title(children->data[i]);
}
int main(int argc,char **argv)
{
struct stat buf;
GumboOutput *output;
FILE *fp;
char *data;
/* 读取HTML文本文件 */
if(!(fp=fopen(argv[1],"rb"))) return -1;
stat(argv[1],&buf);
data=malloc(sizeof(char)*(buf.st_size+1));
fread(data,sizeof(char),buf.st_size,fp);
fclose(fp);
data[buf.st_size]=0;
/* 解析HTML文本文件 */
output=gumbo_parse(data);
/* 获取TITLE */
get_title(output->root);
/* 销毁,释放内存 */
gumbo_destroy_output(&kGumboDefaultOptions,output);
free(data);
return 0;
}
注释已经写的很清楚了,首先我们的节奏是这个样子的:
第一步加载HTML文本文件,我们把它读到一个buf中,
第二步我们进行解析出GumboOutput数据结构
第三步在GumboOptout这个数据结构中找出title标签
最后我们输出内容,gumbo的步骤基本上就是这个样子的了,使用gcc编译的时候需要加上
-lgumbo
下面再说一个例子,该例子中的HTML文件内容是各国DNS的IP地址以及物理地址,大概的格式是
<dt><dd class="ipstart">开始ip地址</dd><dd class="ipend">结束ip地址</dd><dd class="address">物理地址</dd></dt>
我们的解析步骤是获取所有dt标签再获取所有dd标签,然后分别输出dd标签中class属性为ipstart、ipend、address的内 容,下面放代码,由于原HTML文本文件内容放多,我不便放上来,这里就使用在线抓取的方式获取HTML文本,所以这里给出的是HTML文本的url地 址,至目前写代码这一刻该程序还是完全能够正常工作的,日后会该网页是否会因该网页做调整等原因解析出错就不得而知了。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <oauth.h>
/* 包含头文件 */
#include <gumbo.h>
#define URL "http://ip.yqie.com/dns_usa.htm"
void print_dns(GumboNode *node,GumboAttribute *attr)
{
/* 获取子节点 */
GumboNode *ip=(GumboNode *)(&node->v.element.children)->data[0];
/* 根据class属性的值打印结果 */
if(strcmp(attr->value,"ipstart") == 0)
{
if(ip->type == GUMBO_NODE_TEXT)
printf("开始IP:%s ",ip->v.text.text);
}
else if(strcmp(attr->value,"ipend") == 0)
{
if(ip->type == GUMBO_NODE_TEXT)
printf("结束IP:%s ",ip->v.text.text);
}
else if(strcmp(attr->value,"address") == 0)
{
if(ip->type == GUMBO_NODE_TEXT)
printf("物理地址:%s\n",ip->v.text.text);
}
}
void get_dns(GumboNode *node,GumboTag tag)
{
GumboVector *children;
GumboAttribute *attr;
int i;
if(node->type != GUMBO_NODE_ELEMENT) return;
/* 获取当前节点class属性 */
if(attr=gumbo_get_attribute(&node->v.element.attributes,"class"))
print_dns(node,attr);
/* 当前节点子节点 */
children=&node->v.element.children;
/* 如果当前节点标签为td我们就查找dd标签 */
if(node->v.element.tag == GUMBO_TAG_DT)
for(i=0;i < children->length;++i)
get_dns(children->data[i],GUMBO_TAG_DD);
/* 查找所有<dt>标签 */
for(i=0;i < children->length;++i)
get_dns(children->data[i],GUMBO_TAG_DT);
}
int main(void)
{
GumboOutput *output;
char *buf;
/* 下载HTML文本文件 */
buf=oauth_http_get(URL,NULL);
if(!buf) return-1;
/* 解析 */
output=gumbo_parse(buf);
if(!output)
{
free(buf);
return -1;
}
/* 获取我们想要的内容 <dt>*/
get_dns(output->root,GUMBO_TAG_DT);
/* 释放资源 */
gumbo_destroy_output(&kGumboDefaultOptions,output);
free(buf);
return 0;
}