免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1029 | 回复: 0
打印 上一主题 下一主题

Linux编程-1 [复制链接]

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:15午马
日期:2015-02-04 12:00:07羊年新春福章
日期:2015-02-04 11:57:56双子座
日期:2014-12-02 11:44:59金牛座
日期:2014-10-08 16:47:08狮子座
日期:2014-08-29 13:37:46巳蛇
日期:2014-08-26 17:32:29NBA常规赛纪念章
日期:2015-05-04 22:32:03
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-02-21 17:09 |只看该作者 |倒序浏览
atoi的使用:字符串转换成相应的整数。
//atoi.c
#include
#include
int main(int argc,char **argv)
{
   printf("%d\n",atoi(argv[1]);
   return 0;
}
./atoi 12
12

//atoi.c
#include
#include
int main(int argc,char **argv)
{
printf("%s\n",argv[1]);
return 0;
}
./atoi 12
12

求出数组的元素个数
#include
int main(int argc,char **argv)
{
  int a[3];
  printf("n=%d\n",sizeof(a)/sizeof(int));
  return 0;
}
./a.out
n=3

关于段错误
#include
#include
int main(int argc,char **argv)
{
   char *s;
   strcpy(s,"hello");
   printf("%s\n",s);
   return 0;
}
./a.out
段错误

解决方法
#include
#include
int main(int argc,char **argv)
{
   char s[20]="";
   strcpy(s,"hello");
   printf("%s\n",s);
   return 0;
}

用assert函数控制程序异常
#include
#include
int main(int argc,char **argv)
{
    FILE *fp=NULL;
    fp=fopen(argv[1],"r");
    assert(fp!=NULL);/*如果打开文件异常,程序将在此退出*/
    fclose(fp);
    return 0;
}
./a.out filename
//如果文件不存在,则显示
a.out: assert.c:7: main: Assertion `fp != ((void *)0)' failed.

查看程序中函数和变量的地址
#include
int main(int argc,char **argv)
{
  int x=0;
  float y=0.0;
  printf("main=%u argc=%u argv=%u x=%u y=%u\n",main,&argc,argv,&x,&y);
  return 0;
}

write函数的使用
#include /*for write*/
#include //for strlen
/*ssize_t write(int fd,const void *buf,size_t count);*/
int main(int argc,char **argv)
{
   write(1,argv[1],strlen(argv[1]));
   write(1,"\n",1);
   return 0;
}
./a.out hello
hello
//write函数的一般用法是:
int fd;
fd=open(filename,MODE);
write(fd,buf,size);
close(fd);
由于Linux系统中有三个默认的句柄,即标准输入、标准输出、标准出错,对应标准C中的文件句柄(FILE)是stdin、stdout、stderr,在Linux系统中是整数值0,1,2
因此,当我们往1句柄write内容时,就是在标准输出设备上显示内容,比如我们的终端上。


打出所有系统定义的错误代码及错误描述
#include //for strerror
#include
#include
int main(int argc,char **argv)
{
  int i;
  for (i=0;i
#include //for strsignal
#include
int main(int argc ,char **argv)
{
  int i;
  for (i=0;i
int main(int argc, char ** argv)
{
    char buf[5] = "";
     fread(buf, sizeof(buf) - 1, 1, stdin);

     //注意此处为:sizeof(buf)-1,不是sizeof(buf)
//因为字符串的需要自动加上'0'结束符,所以长度为4,第5个数组放'0'。
     /* fgets(buf, 5, stdin); */
     printf("%s\n", buf);
     return 0;
}

./a.out
asdfg
asdf
//输入的数据将会被程序接收并回显

程序中的fread和fgets实现同样的功能。
因为系统中有stdin、stdout、stderr本个已经定义好的句柄用作标准输入、标准输出、标准出错,因此我们可以直接利用stdin来进行输入,同样可以用stdout和stderr来作输出。这是用stdio时的情况,即标准C定义的。
如果是用unistd,即UNIX下常用的一套IO库,那么标准输入、标准输出、标准出错分别是0、1、2本个句柄,可以用read函数来实现输入、write函数来实现输出。比如:
read(0, buf, sizeof(buf) -1);/* 可以用来接收用户输入 */
write(1, buf, strlen(buf)); /* 可以用来输出buf的内容到标准输出 */


面试题。不懂????
#include
#include
void func(char *str)
{
  printf("sizeof(str)=%d\n",sizeof(str));
  printf("strlen(str)=%d\n",strlen(str));
}
int main(int argc,char **argv)
{
  int b[]={1,2,3,4,5,6};
  char a[]="123456789";
  printf("sizeof(a)=%d\n",sizeof(a));
  printf("sizeof(b)=%d\n",sizeof(b));
  func(a);
  return 0;
}
./a.out
sizeof(a)=10
sizeof(b)=24
sizeof(str)=4
strlen(str)=9








本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/54642/showart_481870.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP