- 论坛徽章:
- 8
|
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 |
|