C语言要注意的几点

1. 函数不能写在变量定义之前,否则将编译不过,如:

   printf( "nihao\n" );

   int m = 0;

 

2. 最好每行一个变量,且不要这样写:int result =strcmp( str1, str2 );

   最好这样写:int result = 0; result = strcmp( str1, str2 );

 

3. 可以这样写:char *pStr ="sfsf";  pStr指向常量 可以puts( pStr );但不能gets( pStr );

 

4. char a[1000][100]; int test( char **p );  test( a ); 错误!,char **类型不能传递二维数组

   p[0]为char* 类型, p[0]实际上取出的是前4个字符组成的int值,而不是a[0]的值

   参考资料:http://blog.csdn.net/mjshldcsd/article/details/7887196

 

5. // 若无typedef,那么Stu a;将编译不过(vc6.0下)。

typedef struct Stu   {

    char name[100];

    int age;

    int score;

}Stu; 

Stu a;

Stu b;

b = a;  // 可以直接赋值 调用的是默认赋值函数 默认的拷贝都是浅拷贝或者说是按位拷贝

 

6. puts函数会输出换行

 

 

7. 按这种格式输入 abc 1232  可用 scanf( "%s%d%d",student[i].name, &student[i].age, &student[i].score  );  按格式输出可用printf

用%s读入时,表示需要读入一个字符串到字符数组中,遇到第一个空格或回车,读入即停止。

 

8. Printf不足位数以0补齐:

如输出:

2000-01-03

2000-01-31

用 printf("%d-%02d-%02d\n", y1, m1, d1);

    int month[13] = { 0, 31, 28,31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // 每月的天数

    int mths[13] = { 0, 31, 59,90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };  //累加月天数

 

9. 有时不能运行,就把360退去,再看看是不是后台已经在运行了,退出在运行就好了。

 

10. 对于要申请较大内存,如int a[1000000];; 在函数中申请将导致栈溢出,栈没有足够的空间,最好申请为全局变量即可!

 

11. 对应int  result= strcmp( a, b );判断,最后用:

If( result  == 0 ) ..

Else if( result > 0 )..

Else if( result < 0)..

而不用 if ( result == 1 )或  if ( result == -1 ) 九度中就是这样

http://ac.jobdu.com/problem.php?pid=1069

可能有些编译器strcmp不返回1或-1

 

12. 有时用fflush(stdin)来清除输入缓冲区

 

    while( scanf( "%d",&n ) != EOF )

    {

        InitStack( &st );

 

        if( n == 0 )

        {

            return 0;

        }

//换行asc码就是10

        for( i = 0; i < n; i++ )

        {

            fflush(stdin);  // 清除输入缓冲区  gcc中貌似通不过,可用getchar()来替代

            scanf( "%c",&ch );

 

13. 输入字符串最好用scanf( "%s", DetectStr );而不用gets,因为上次的输入会直接输入到gets中去

 

14. Puts函数会输出换行

 

15.memset( data, 0, SIZE * sizeof( int ) ); // 函数解释:将s中前n个字节 (typedef unsigned int size_t)用 ch 替换并返回 s 。

     // 故只能清0,若清为1,则data[0] != 1

 

16. Unsigned longint 用%lu格式输入输出

 

17. 文件读取字符数据时要进行判断

    if( ( fIn = fopen( Infile,"r" ) ) == NULL )

    {

        printf( "can not open file!\n" );

        return 0;

    }

 

    if( ( fOut = fopen( Outfile,"w" ) ) == NULL )

    {

        printf( "can not open file!\n" );

        return 0;

    }

 

    while( !feof( fIn ) )

    {

        ch = fgetc( fIn );

 

        if( ch == EOF ) // 进行判断,否则读到最后为-1,而下面的会把-1输出来了

        {

            break;

        }

 

 

        fputc( ch, fOut ); // 把fIn文件拷贝到文件fOut中去

        printf( "%c", ch );

    }

 

    fclose( fIn );

    fclose( fOut );

 

18. Fgets会读取一行末的换行符

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值