}
int main(void)
{
int b[] = { 1, 2, 3, 4, 5, 6 };
char a[] = "123456789";
printf("sizeof(a)=%d\n", sizeof(a));
printf("sizeof(b)=%d\n", sizeof(b));
func(a);
return 0;
}
/*************分界符结束***********************/
看到电脑上一些临时代码,小、也没多大技术含量,本想直接删除,想想还是直接贴上来或许可以分享一下
int main(void)
{
struct x {
int a;
char b;
short c;
};
struct x y[0];
printf("sizeof(y):%d\n", sizeof(y));
y[0].a = 1;
return 0;
}
/*************分界符结束***********************/
int main(int argc, char **argv)
{
x.a = 11;
x.b = 2;
y = x;
printf("y.a:%d y.b:%d\n", y.a, y.b);
return 0;
}
/*************分界符结束***********************/
-----------------------------------------
Thunderbird + Gnupg + Enigmail = PGP/MIME
__________________________________________________
�Ͽ�ע���Ż���������������?
http://cn.mail.yahoo.com
int main(int argc, char **argv)
{
int fd;
FILE *fp;
char chb;
fd = open(argv[1], O_RDONLY);
if (fd == -1)
return -1;
fp = fdopen(fd, "r");
if (fp == NULL)
return -2;
while (fread(&chb, 1, 1, fp) == 1) {
printf("%d---ch:%c\n", __LINE__, chb);
}
if (read(fd, &chb, 1) == 1)
printf("%d---ch:%c\n", __LINE__, chb);
else
printf("%d---nothing read!\n", __LINE__);
fclose(fp);
close(fd);
return 0;
}
/*************分界符结束***********************/
int main(int argc, char **argv)
{
printf("%s %d\n", argv[0], remove(argv[0]));
return sleep(5);
}
/*************分界符结束***********************/
argv[0]是表示运行的程序本身吧?
remove返回值0是表示remove成功了吧?
为什么可以成功呢?因为Process和Program的差别。
#define MAX_NUM 100
int main(void)
{
int i, j;
float k;
for (i = 1; i < MAX_NUM; i++)
for (j = i + 1; j < MAX_NUM; j++)
if (i * i + j * j <= MAX_NUM * MAX_NUM) {
k = sqrt(i * i + j * j);
if ((k == (int) k) && (4 * i == 3 * j) && (5 * j == 4 * k))
printf("%03d^2+%03d^2=%03.0f^2\n", i, j, k);
}
return 0;
}
/*************分界符结束***********************/
好象是好久以前一个朋友去一家公司面试遇到的题目,当时帮他写的
int main(int argc, char **argv)
{
execl("/bin/ls", "ls", "-a", (char *) NULL);
return 0;
}
/*************源代码execl.c分界符结束***********************/
如果命令ls没有参数可以写成:
/*************源代码execl.c分界符开始***********************/
#include <unistd.h>
int main(int argc, char **argv)
{
execl("/bin/ls", "ls", (char *) NULL);
return 0;
}
/*************源代码execl.c分界符结束***********************/
int main(void)
{
char buf[4] = "";
read(0, buf, 3); /*用read从键盘输入3个字符*/
//printf("%s\n", buf);
write(1, buf, strlen(buf)); /*将输入字符输出*/
return 0;
}
/*************源代码read_write.c分界符结束***********************/
int select(int nfds, fd_set *readfds, fd_set *writefds,
fd_set *exceptfds, struct timeval *timeout);
fd_set rdfds, wtfds, expfds;
struct timeval tmv;
int nfds, retval;
while(1) {
/*清空fd_set,注意每次循环都要做select之前这些事;*/ FD_ZERO(&rdfds); FD_ZERO(&wtfds);
FD_ZERO(&expfds);
/*把要监测的fd加入fd_set*/ FD_SET(0, &rdfds); FD_SET(clientsocketfd1,
&rdfds); FD_SET(clientsocketfd2, &rdfds);
/*找出fd最大值*/if(clientsocketfd1 > 0) nfds = clientsocketfd1 + 1; if
(clientsocketfd2 > clientsocketfd1) nfds = clientsocketfd2 + 1;
/*设定时间*/ tmv.tv_sec = 1;tmv.tv_usec = 0;
retval = select(nfds, &rdfds, &wtfds, &expfds, &tmv); /*检测在指定时间内是否有fd
状态发生变化*/
if(retval == 0) continue; /*所有的fd状态都无变化*/
else if(retval < 0) exit(errno); /*系统出错*/
else { /*某个或多个fd状态发生变化*/
if(FD_ISSET(0, &rdfds)) {/*有按键*/
/*接收键盘上的数据*/
read(0, buf, count);
}
if(FD_ISSET(clientsocketfd1, &rdfds)) {/*client1发送了数据给你*/
/*接收client1上的数据*/
recv(clientsocketfd1);
}
if(FD_ISSET(clientsocketfd2, &rdfds)) {/*client2发送了数据给你*/
/*接收client2上的数据*/
recv(clientsocketfd2);
}
}
}
/*************伪代码select.txt分界符结束***********************/
#define FBDEVFILE "/dev/fb"
#define COLS 640
#define ROWS 480
/* 프로그램을 잘못 실행 시킬때 나오는 프로그램 실행방법 */
void usage()
{
printf("\n=====================================\n");
printf("\nUsage: ./drawbmp xxx.bmp \n");
printf("\n=====================================\n");
}
/* bmp파일에서 그림 정보와 데이터를 뽑아 내는 함수 */
/* 교육의 편의성을 위해 24bit 트루 칼러만에서 사용할 수 있음 */
void read_bmp(char *filename, char **pDib, char **data, int *cols, int
*rows)
{
BITMAPFILEHEADER bmpHeader;
BITMAPINFOHEADER *bmpInfoHeader;
unsigned int size;
unsigned char ID[2];
int nread;
FILE *fp;
fp = fopen(filename,"rb");
if(fp == NULL) {
printf("ERROR\n");
return;
}
ID[0] = fgetc(fp);
ID[1] = fgetc(fp);
/* BMP 마크를 확인 */
if(ID[0] != 'B' && ID[1] != 'M') {
fclose(fp);
return;
}
/* bmp 파일에서 BITMAPFILEHEADER 만큼 읽음 */
nread = fread(&bmpHeader.bfSize,1,sizeof(BITMAPFILEHEADER),fp);
size = bmpHeader.bfSize - sizeof(BITMAPFILEHEADER);
/* 위에서 얻은 size만큰 메모리를 잡고 일어서 pDib에 넣음*/
*pDib = (unsigned char *)malloc(size);
fread(*pDib,1,size,fp);
/* 위에서 읽은 pDib에서 BITMAPINFOHEADER를 추출함 */
bmpInfoHeader = (BITMAPINFOHEADER *)*pDib;
/* 24비트 true 칼라 있때만 사용 할 수 있도록 함 */
if(24 != bmpInfoHeader->biBitCount)
{
printf("It supports only 24bit bmp!\n");
fclose(fp);
return;
}
/* BITMAPINFOHEADER에서 가로와 세로 사이즈을 구함 */
*cols = bmpInfoHeader->biWidth;
*rows = bmpInfoHeader->biHeight;
/* 실제 데이터의 주소를 가져옴 */
*data = (char *)(*pDib + bmpHeader.bfOffBits - sizeof(bmpHeader)-2);
fclose(fp);
}
/* 할당한 메모리 해제 */
void close_bmp(char **pDib)
{
free(*pDib);
}
int main(int argc, char *argv[])
{
int cols, rows;
char *pData,*data;
char r,g,b;
unsigned short bmpdata1[640*480];
unsigned short pixel;
unsigned short *pfbmap;
struct fb_var_screeninfo fbvar;
int fbfd;
int i,j,k,t;
if(argc != 2){
usage();
return 0;
}
/* 프레임 버퍼를 오픈 함 */
fbfd = open(FBDEVFILE, O_RDWR);
if(fbfd < 0){
perror("fbdev open");
exit(1);
}
/* mmap 함수를 이용하여 flame buffer의 메모리의 가상 주소를 얻었냄 */
pfbmap = (unsigned short *)
mmap(0, COLS*ROWS*2,PROT_READ|PROT_WRITE, MAP_SHARED, fbfd, 0);
if((unsigned)pfbmap == (unsigned)-1)
{
perror("fbdev mmap");
exit(1);
}
/* bmp파일을 읽어 드림 */
read_bmp(argv[1],&pData,&data, &cols,&rows);
/* 한 픽셀에 3byte인것을 2byte로 바꿈 */
for(j=0;j<rows;j++){
k = j*cols*3;
t = (rows -1 - j)*cols;
for(i=0;i<cols;i++)
{
b = *(data + (k + i*3));
g = *(data + (k + i*3+1));
r = *(data + (k + i*3+2));
pixel = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3);
bmpdata1[t+i] = pixel;
}
}
/* bmp 파일에서 읽은 data를 프레임 버퍼의 메모리로 카피 함 */
memcpy(pfbmap,bmpdata1, COLS*ROWS*2);
/* 활당 받은 메로리들을 해제한 후 프레임 버퍼룰 close 함 */
munmap(pfbmap,ROWS*COLS*2);
close_bmp(&pData);
close(fbfd);
return 0;
}
/*************源代码drawbmp.c分界符结束***********************/
struct x {
int id;
char name[16];
char addr[16];
} onep;
int main(void)
{
int x, i, len;
unsigned char ch, *p;
memset(&onep, 0, sizeof(onep));
scanf("%d", &onep.id);
printf("id=%d\n", onep.id);
getchar(); /*注意:如果是使用标准C库的一套输入函数,每次输入(scanf之类的函数)之后有回车字符在buffer里*/
read(0, onep.name, 15);
onep.name[strlen(onep.name) - 1] = 0;
read(0, onep.addr, 15);
onep.addr[strlen(onep.addr) - 1] = 0;
printf("id:%d name:%s(len:%d) addr:%s(len:%d)\n", onep.id,
onep.name,
strlen(onep.name), onep.addr, strlen(onep.addr));
len = sizeof(onep);
onep.id=htonl(noep.id); /*非单个字节的数据在网络上发送前要进行host to network转换*/
p = (char *) &onep;
for (i = 0; i < len; i++) {
printf("%02X ", p[i]);
}
printf("\n");
send(socketfd, (void *) &onep, sizeof(onep), 0); /*如果输入的name和addr字符
个数较少,中间将填0发送*/
return 0;
}
/*************源代码send_struct.c分界符结束***********************/
int main(int argc, char **argv)
{
int bufa = 0;
int bufb = 0;
int bufc = 0;
sscanf(argv[1], "%d %d %d", &bufa, &bufb, &bufc);
printf("argv[1]:%s\n", argv[1]);
printf("bufa:%d\n", bufa);
printf("bufb:%d\n", bufb);
printf("bufc:%d\n", bufc);
return 0;
}
/*************源代码sscanf.c分界符结束***********************/
sscanf属于scanf系列函数,scanf从一个FILE *里接收数据,而sscanf从一个char *接收数据。
void Prt(unsigned int *p)
{
unsigned char *m;
m = (unsigned char *) p;
printf("m=%x\n", *m);
m++;
printf("m=%x\n", *m);
m++;
printf("m=%x\n", *m);
m++;
printf("m=%x\n\n", *m);
}
int main(int argc, char **argv)
{
unsigned int x;
unsigned int y;
x = atoi(argv[1]);
y = htonl(x);
printf("本机顺序:\n");
Prt(&x);
printf("网络顺序:\n");
Prt(&y);
return 0;
}
/*************源代码htonl_do.c分界符结束***********************/
编译之后给一个比较大的数作为参数来运行,比如:
./a.out 123456789