http://wiki.ubuntu.org.cn/index.php?title=%E9%A6%96%E9%A1%B5&variant=zh-cn
很有用的帮助查询网站,中文化的,很方便,站在前人的肩膀上,容易很多,嘿嘿。
编程第一步就是装编译器。。linux一般都默认装好gcc的,可ubuntu下,必须装build-essential
$ sudo apt-get install build-essential
ubuntu的东西很依赖网络,除非你用的是dvd源。。可能是老外认为电脑就应该是连着网络的。。
装了这个,顺点IDE,推荐 anjuta ,KDevelop 这个个工具,后者的字体不知道怎么改,太小了,我看不大清。。所以用前者了。
关于文件操作的一组系统调用,
#include <fcntl.h> //用于flags的宏定义
int open( char *filename, int flags) ;
int open ( char *filename ,int flags, mode_t mode) ;
宏为: O_RDONLY(只读) ,O_WRONLY, O_CREAT,等
函数返回-1表示调用失败,可能是不存在此文件阿,没权限啥的
包含errno.h 用strerror(errno) 返回错误信息,很方便
int read (int fd , void *buf, int len);
len为欲读取的字节数,
返回实际读取的字节数,buf是一个缓冲区,不能太小
int write( int fd, void *buf,int len);
关闭文件
int close( int fd);
我按书上提示编了个读取文件的小程序,简单版cat
gcc编译不带指定outfile的话他会产生一个 .o 的输出,我不知道怎么把.o的东西转成可执行文件,所以只能gcc fr.c -o fr
效果还不错,当然这是最最简单的。。。
编译的时候我还发现个有趣的现象,就是你mkdir source 这个存放源代码的目录,可是当你cd source时却cd不进去,
我想了下,source应该是条命令,因为单独输入source
bash: source: 此处需要文件名作参数
source: usage: source filename [arguments]
可不知道怎么让bash 让他只认为是cd 的参数,应该有什么类似转义的东西,可是我暂时没找到,最近不知道为什么老咳嗽。。明天强台风学校不想去了,淋湿了以后很容易就感冒了,而且学校里学不到什么,其他学校都停课的。。就当给自己放假了。。
很有用的帮助查询网站,中文化的,很方便,站在前人的肩膀上,容易很多,嘿嘿。
编程第一步就是装编译器。。linux一般都默认装好gcc的,可ubuntu下,必须装build-essential
$ sudo apt-get install build-essential
ubuntu的东西很依赖网络,除非你用的是dvd源。。可能是老外认为电脑就应该是连着网络的。。
装了这个,顺点IDE,推荐 anjuta ,KDevelop 这个个工具,后者的字体不知道怎么改,太小了,我看不大清。。所以用前者了。
关于文件操作的一组系统调用,
#include <fcntl.h> //用于flags的宏定义
int open( char *filename, int flags) ;
int open ( char *filename ,int flags, mode_t mode) ;
宏为: O_RDONLY(只读) ,O_WRONLY, O_CREAT,等
函数返回-1表示调用失败,可能是不存在此文件阿,没权限啥的
包含errno.h 用strerror(errno) 返回错误信息,很方便
int read (int fd , void *buf, int len);
len为欲读取的字节数,
返回实际读取的字节数,buf是一个缓冲区,不能太小
int write( int fd, void *buf,int len);
关闭文件
int close( int fd);
我按书上提示编了个读取文件的小程序,简单版cat
#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
int main(int argc, char *argv[] )
{
int fd,k,i,len;
unsigned char buf[512] ;
for (k=1; k< argc; k++)
{
fd = open(argv[k] , O_RDONLY);
if ( fd == -1 )
{
fprintf(stderr,"can't open the file,%s ",strerror(errno) );
continue;
}
while ( len = read (fd,buf,sizeof(buf) >0 ) )
{
for ( i=0;i<len;i++)
printf("%c" ,buf[i] );
}
if(len<0)
perror("read data");
close(fd);
}
printf(" ");
return 0;
}
#include <fcntl.h>
#include <errno.h>
int main(int argc, char *argv[] )
{
int fd,k,i,len;
unsigned char buf[512] ;
for (k=1; k< argc; k++)
{
fd = open(argv[k] , O_RDONLY);
if ( fd == -1 )
{
fprintf(stderr,"can't open the file,%s ",strerror(errno) );
continue;
}
while ( len = read (fd,buf,sizeof(buf) >0 ) )
{
for ( i=0;i<len;i++)
printf("%c" ,buf[i] );
}
if(len<0)
perror("read data");
close(fd);
}
printf(" ");
return 0;
}
gcc编译不带指定outfile的话他会产生一个 .o 的输出,我不知道怎么把.o的东西转成可执行文件,所以只能gcc fr.c -o fr
效果还不错,当然这是最最简单的。。。
编译的时候我还发现个有趣的现象,就是你mkdir source 这个存放源代码的目录,可是当你cd source时却cd不进去,
aca@aca-desktop:~$ ls
Desktop Examples rf rf.c source 未命名文件夹
aca@aca-desktop:~$ cd source
bash: cd: source: No such file or directory
Desktop Examples rf rf.c source 未命名文件夹
aca@aca-desktop:~$ cd source
bash: cd: source: No such file or directory
我想了下,source应该是条命令,因为单独输入source
bash: source: 此处需要文件名作参数
source: usage: source filename [arguments]
可不知道怎么让bash 让他只认为是cd 的参数,应该有什么类似转义的东西,可是我暂时没找到,最近不知道为什么老咳嗽。。明天强台风学校不想去了,淋湿了以后很容易就感冒了,而且学校里学不到什么,其他学校都停课的。。就当给自己放假了。。