博文

[置顶] C语言 新手必看(2006-11-27 13:25:00)

摘要: 



本人也是刚学C不久算是老菜鸟。把我遇到的问题写出来,希望对初学者有点帮助。

一、分号,大括号

  分号。分号是表达式结束的标志,一般表达式后面都要有。写“;”的时候一定要注意:是否要结束前面的语句。注意:if,switch,for,while语句,数据类型定义,函数定义。

if(a>b) /*if语句,没有分号*/

{...}

while(i+=10,i!=100); /*while语句循环体为空,依靠逗号语句实现循环*/

struct a /*结构体数据定义,没有分号*/

{...}b; /*结构体变量,要有分号*/

int sum(...) /*函数定义,没有分号*/

{....}

大括号。大括号是一个语句段的标志。写大括号时最好一次写一对,然后把光标移到大括号里写。避免遗漏。

二、运算符号

“=”与“==”

“=”用于赋值,注意“=”左边必须是变量,右边可以是常量也可以是变量。“==”用于判断两个量的大小,左右两边可以是常量也可以是变量(尽量把常量写在左边,这样“==”误写成“=”时编译器就会报错)。运算表达式有它本身的值。“=”语句值为“=”右边的量的大小;“==”语句值为判断结果,无外乎两种,0(表示“==”两边不等)1(“==”两边相等)。

(i=1)==(3==4); /*i值为1,整个表达式值为0*/

  “,”
逗号语句是从左到右计算,整个逗号语句的值为最后一个语句的值
i=(j=2,j+8,j++);   /*先计算j=2,值为2,j+8不是运算表达式,跳过,计算j++得到整个括号内的值3*/

“/”

“/”两边都是整型变量的时候结果也是整型,而且结果遵循向0靠拢的原则。

运算符的优先级及结合方向

不多说了,表格一定要背牢。

三、变量

  命名

不要吝惜,能说明白性质尽量在变量的名字上说明。避免老是使用一个字母,或者难以理解的变量名。对......

阅读全文(2210) | 评论:0

指针部分(2007-08-21 21:20:00)

摘要:题目要求: 数组1234567 ,倒过来输出。 # include <stdio.h>
void main ()
  {
       int a[7]={1,2,3,4,5,6,7}, i, *p;
       for (p=a+6;p>=a;p--)
       printf("%d,",*p);
    getch();
} 这里应该注意2个问题。 数组的第一位置是a[0] 而不是a[1].  ......

阅读全文(1993) | 评论:0

ping的源程序 (2006-12-05 12:42:00)

摘要: // Module Name: Ping.c
//
// Description:
// This sample illustrates how an ICMP ping app can be written
// using the SOCK_RAW socket type and IPPROTO_ICMP protocol.
// By creating a raw socket, the underlying layer does not change
// the protocol header so that when we submit the ICMP header
// nothing is changed so that the receiving end will see an
// ICMP packet. Additionally, we use the record route IP option
// to get a round trip path to the endpoint. Note that the size
// of the IP option header that records the route is limited to
// nine IP addresses.
//
// Compile:
// cl -o Ping Ping.c ws2_32.lib /Zp1
//
// Command Line Options/Parameters:
// Ping [host] [packet-size]
//
// host String name of host to ping
// packet-size Integer size of packet to send
// (smaller than 1024 bytes)
//
//#pragma pack(1)

#define WIN32_LEAN_AND_MEAN
#include
#include
#include
#include
......

阅读全文(2547) | 评论:0

C语言printf格式笔记(2006-12-04 10:17:00)

摘要:1.转换说明符
      %a(%A)     浮点数、十六进制数字和p-(P-)记数法(C99)
      %c             字符
      %d             有符号十进制整数
      %f              浮点数(包括float和doulbe)
      %e(%E)     浮点数指数输出[e-(E-)记数法]
      %g(%G)     浮点数不显无意义的零"0"
      %i              有符号十进制整数(与%d相同)
      %u             无符号十进制整数
      %o             八进制整数    e.g.     0123
      %x(%X)      十六进制整数0f(0F)   e.g.   0x1234
&nbs......

阅读全文(9896) | 评论:0

关于C语言中return的一些总结 (2006-12-03 22:10:00)

摘要:关于C语言中return的一些总结 
return是C++预定义的语句,它提供了种植函数执行的一种放大。当return语句提供了一个值时,这个值就成为函数的返回值. 
说到return,有必要提及主函数的定义,下面是从网络上找到的资料,好好消化吧,对了解主函数中返回值的理解有很大的帮助. 
很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even been C.( void main( ) 从来就不存在于 C++ 或者 C )。下面我分别说一下 C 和 C++ 标准中对 main 函数的定义。 
1. C 
在 C89 中,main( ) 是可以接受的。Brian W. Kernighan 和 Dennis M. Ritchie 的经典巨著 The C programming Language 2e(《C 程序设计语言第二版》)用的就是 main( )。不过在最新的 C99 标准中,只有以下两种定义方式是正确的: 
int&nb......

阅读全文(3612) | 评论:1

C语言的34种运算符(2006-11-29 19:21:00)

摘要:  34种运算符: 算术运算符:+  -  *  /  %  ++  -- 关系运算符:<  <=   ==   >   >=   != 逻辑运算符:!  &&  || 位运算符  :<<   >>   ~  |  ^  & 赋值运算符:= 及其扩展 条件运算符:?: 逗号运算符:, 指针运算符:*  & 求字节数   :sizeof 强制类型转换:(类型) 分量运算符:.  -> 下标运算符:[] 其它     :( )  - ......

阅读全文(4620) | 评论:1

C语言程序设计技巧(2006-11-27 21:01:00)

摘要: 
作者: 出处:天极论坛责任编辑: [ 2003-04-03 15:31 ] 在许多应用软件运行时都带有命令行参数,其实这些命令行参数在C语言编写的程序中也可以实现
  在许多应用软件运行时都带有命令行参数,其实这些命令行参数在C语言编写的程序中也可以实现,灵活地运用命令行参数进行处理可以有效地提高程序的运行效率,收到事半功倍的效果。

  C语言中有关命令行参数涉及到程序的主函数main(int argc,char *argv[]这样两个参数,其中,int argc表示命令行参数的个数(包括可执行程序名本身),char *argv[]表示每个参数的具体内容,argv[0]为命令行中可执行程序名本身,argv[1]为命令行中第二个参数的内容,依次类推。如下例输出命令行参数的个数及参数的内容:

main (int argc,char *argv[],
{int I;
 printf("\n命令行中可执行文件名为:%s",argv[0]);
 printf("\n总共有%d个参数:",argc);
 I=0;
 while(argc>=1)
 {printf(″%s  ",argv[I++]);
  argc--;}
}
  命令行参数用的最多还是在诸如DIR A:等之类带有盘符、路径或文件名这样的命令行中,所以说灵活处理这一类参数才能有效地提高程序的运行效果。譬如DIR命令,其后可以是盘符,可以是路径,也可以是文件名,如何区分这一参数呢?请看下例(此程序模拟DIR命令,程序要求在命令行输入一个参数:盘符或路径或文件名,若无参数或参数多于一个都将取默认的参数“*.*”)。

\*--------------------
功能:模拟DIR命令进行处理命令行参数
--------------------*/
#include
#include
#include
#inchlude
int j,num=0;
char ss[20],path[50],path2[50];
void main (int argc,char *argv......

阅读全文(1423) | 评论:0

函数大全(w开头)(2006-11-27 20:09:00)

摘要:  函数名: wherex
功 能: 返回窗口内水平光标位置
用 法: int wherex(void);
程序例: #include int main(void)
{
clrscr();
gotoxy(10,10);
cprintf("Current location is X: %d Y: %d\r\n", wherex(), wherey());
getch(); return 0;
}


函数名: wherey
功 能: 返回窗口内垂直光标位置
用 法: int wherey(void);
程序例: #include int main(void)
{
clrscr();
gotoxy(10,10);
cprintf("Current location is X: %d Y: %d\r\n", wherex(), wherey());
getch(); return 0;
}


函数名: window
功 能: 定义活动文本模式窗口
用 法: void window(int left, int top, int right, int bottom);
程序例: #include int main(void)
{ window(10,10,40,11);
textcolor(BLACK);
textbackground(WHITE);
cprintf("This is a test\r\n"); return 0;
}


函数名: write
功 能: 写到一文件中
用 法: int write(int handel, void *buf, int nbyte);
程序例: #include
#include
#include
#include
#include
#include int main(void)
{
int handle;......

阅读全文(1784) | 评论:0

函数大全(v开头)(2006-11-27 20:08:00)

摘要:
  函数名: vfprintf
功 能: 送格式化输出到一流中
用 法: int vfprintf(FILE *stream, char *format, va_list param);
程序例: #include
#include
#include FILE *fp; int vfpf(char *fmt, ...)
{
va_list argptr;
int cnt; va_start(argptr, fmt);
cnt = vfprintf(fp, fmt, argptr);
va_end(argptr); return(cnt);
} int main(void)
{
int inumber = 30;
float fnumber = 90.0;
char string[4] = "abc"; fp = tmpfile();
if (fp == NULL)
{
perror("tmpfile() call");
exit(1);
} vfpf("%d %f %s", inumber, fnumber, string);
rewind(fp);
fscanf(fp,"%d %f %s", &inumber, &fnumber, string);
printf("%d %f %s\n", inumber, fnumber, string);
fclose(fp); return 0;
}


函数名: vfscanf
功 能: 从流中执行格式化输入
用 法: int vfscanf(FILE *stream, char *format, va_list param);
程序例: #include
#include
#include FILE *fp; int vfsf(char *fmt, ...)
{
va_list argptr;
int cnt; va_start(argptr,......

阅读全文(1589) | 评论:0

函数大全(u开头)(2006-11-27 20:07:00)

摘要:
  函数名: ultoa
功 能: 转换一个无符号长整型数为字符串
用 法: char *ultoa(unsigned long value, char *string, int radix);
程序例: #include
#include int main( void )
{
unsigned long lnumber = 3123456789L;
char string[25]; ultoa(lnumber,string,10);
printf("string = %s unsigned long = %lu\n",string,lnumber); return 0;
}


函数名: ungetc
功 能: 把一个字符退回到输入流中
用 法: int ungetc(char c, FILE *stream);
程序例: #include
#include int main( void )
{
int i=0;
char ch; puts("Input an integer followed by a char:"); /* read chars until non digit or EOF */
while((ch = getchar()) != EOF && isdigit(ch))
i = 10 * i + ch - 48; /* convert ASCII into int value */ /* if non digit char was read, push it back into input buffer */
if (ch != EOF)
ungetc(ch, stdin); printf("i = %d, next char in buffer = %c\n", i, getchar());
return 0;
}


函数名: ungetch
功 能: 把一个字符退回到键盘缓冲区中
用 法: int ungetch(int......

阅读全文(1117) | 评论:0