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会读取一行末的换行符