C文件输入与输出

1.fopen版本

FILE *fin,*fout;
fin = fopen(“Joyous.in”, “rb”);
fout = fopen(“Joyous.out”, “wb”);
int n;
fscanf(fin,”%d”,&n);//这里读取成功就返回1
fprintf(fout,”%d\n”,n);
fclose(fin);
fclose(fout);

2.freopen版本

freopen(“Joyous.in”,”r”,stdin);
freopen(“Joyous,out”,”w”,stdout);
int n;
scanf(“%d”,&n);
printf(“%d\n”,n);

Continue reading

C编程笔记

1.编译命令gcc test.c -o test
带上参数o就是指定编译文件名
2.printf(“%.2lf”,b)
其中前面2是小数点后位数,l是字母,f是浮点型变量
备注:整型用%d格式化输出,浮点型用%lf格式化输出,低精度转换成高精度之后进行运算输出
3.sqrt是计算数字的算数平方根
4.scanf(“%d%d”,&a,&b)这样输入的时候可以使用空格或者enter来分割两个变量
5.const double pi = 4.0 * atan(1.0);定义一个常量(值始终不可更改)
6.各类型数据取值范围(小心溢出)
7.浮点运算可能存在误差,所有应该考虑到浮点误差。进行浮点比较的时候一般用floor(m+0.5)比较
8.要计算只包含加法,减法,乘法的整数表达式除以正整数n的余数,可以在每步计算之后就对n取余,结果不变
9.windows下输入完毕enter之后按ctlr+z,然后再按enter,linux是ctrl+D可以结束输入

GCC简单使用说明

1.编译单个文件

hello.c代码如下
#include<stdio.h>
int main()
{
printf(“hello world\n”);
return 0;
}

然后保存,然后使用gcc hello.c
这样就会自动生成一个a.out文件
执行./a.out就会输出hello world

2.编辑多个文件

message.c代码如下
#include<stdio.h>
void seeyou(void)
{
printf(“goodbye\n”);
}
hello.c文件内容如下
#include<stdio.h>
void seeyou();
int main()
{
seeyou();
printf(“hello.c\n”);
return 0;
}
然后保存,然后使用gcc -c message.c会生成message.o
然后使用gcc -c hello.c会生成hello.o
然后使用gcc -o hello message.o hello.o
然后可以执行./hello看到输出goodbye和hello.c
上面的命令可直接使用gcc -o message.c hello.c这样就不会生成中间文件

gcc常用选项
-c 只预处理、编译和汇编源程序,不进行连接。编译器对每一个源程序产生一个目标文件。
-o file 确定输出文件为file。如果没有用-o选项,缺省的可执行文件的输出是 a.out,目标文件和汇编文件的输出对source.suffix分别是source.o和source.s,预处理的C源程序的输出是标准输出stdout。
-Dmacro或-Dmacro=defn 其作用类似于源程序里的#define。例如:% gcc -c -DHAVE_GDBM -DHELP_FILE=\”help\” cdict.c其中第一个- D选项定义宏HAVE_GDBM,在程序里可以用#ifdef去检查它是否被设置。第二个-D选项将宏HELP_FILE定义为字符串“help”(由于反斜线的作用,引号实际上已成为该宏定义的一部分),这对于控制程序打开哪个文件是很有用的。
-Umacro 某些宏是被编译程序自动定义的。这些宏通常可以指定在其中进行编译的计算机系统类型的符号,用户可以在编译某程序时加上 -v选项以查看gcc缺省定义了哪些宏。如果用户想取消其中某个宏定义,用-Umacro选项,这相当于把#undef macro放在要编译的源文件的开头。
-Idir 将dir目录加到搜寻头文件的目录列表中去,并优先于在gcc缺省的搜索目录。在有多个-I选项的情况下,按命令行上-I选项的前后顺序搜索。dir可使用相对路径,如-I../inc等。

工欲善其事,必先利其器之Linux下汉化Codeblocks

最近补习数据结构和算法,顺便把在学校丢的东西都找回来~于是就想重新学习下C/C++,工欲善其事,必先利其器.网

上推荐使用codeblocks,下完安装之后发现是英文的(注释:英文水平不咋滴)

汉化!?网上找了半天都是windows下的汉化~~终于在找到一个汉化包(.7z格式的~不管了先试试再说)

然后把文件解压到/usr/share/codeblocks目录下,打开codeblocks~~~~~

看到的是???汉化吧?!

附件:locale

附:code blocks百科:http://baike.baidu.com/view/1562377.htm

code blocks官方网址:http://www.codeblocks.org/

code blocks简单是使用说明;http://hi.baidu.com/qhh_2008/item/dfa9c8c5df13f679cfd4f818

C常见错误提示[间断更新]

1.error: lvalue required as left operand of assignment

表达式中的=号左边应该有个运算符(或者变量)
提示:这样错误提示可能是判断中的==写成了=

2.error: invalid suffix “n” on integer constant
提示:这样的错误有可能是你把3*n写成了3n

3.error: ‘min’ undeclared(first use in this function)
提示:这样的错误可能好似你没有声明min变量

C编程常用数学函数集锦

double sqrt(double x) 返回x的开方
double cos(double x) 返回x的余弦cos(x)值,x为弧度
double sin(double x) 返回x的正弦sin(x)值,x为弧度
double pow(double x,double y) 返回x的y次方的值
double fabs(double x) 返回双精度参数x的绝对值
int abs(int i) 返回整型参数i的绝对值
double floor(double x) 返回不大于x的最大整数
double ceil(double x) 返回不小于x的最小整数

GCC编译已经引入math.h文件提示cos,sin等函数未定义

问题起因:
Joyous.c

[c]
#include<stdio.h>
#include<math.h>
int main()
{
const double PI=4.0*atan(1.0);
//输入正整数n,输出n度的正弦,余弦函数
int n;
double f,s1,c1;
scanf("%d",&n);
f=n*PI/180;
s1=sin(f);
c1=cos(f);
printf("%.2lf,%.2lf\n",s1,c1);
return 0;
}
[/c]

使用gcc Joyous.c
提示:
undefined reference to `sin’
undefined reference to `cos’
初步解决办法:gcc -lm Joyous.c
问题原因,linux下不会自动链接数学库,需要手动链接一次。但是每次都得这么带个lm?麻烦吗?
现在问题是怎么可以自动加载呢?