类型转换
标准头文件<string.h>中声明了strlen和其他字符串函数。
/*strlen函数:返回s的长度*/
int strlen(char s[])
{
int i;
i = 0;
while(s[i] != '\0')
{
++i;
return i;
}
}
/*strlen函数:返回s的长度*/
int strlen(char s[])
{
int i;
i = 0;
while(s[i] != '\0')
{
++i;
return i;
}
}
标准头文件<stdlib.h>声明了atoi函数
/*atoi函数:将字符串s转换为相应的整型值*/
int atoi(char s[])
{
int i,n;
n=0;
for(i=0;s[i]>='0'&&s[i]<='9';++i)
n=10*n+(s[i]-'0'); /* 此处‘10*n’,是因为最终结果n是一个整数,
要把上一次得到的n放到这一次n*10所得数之后的个位上。
例如s[3]={1,2,3},第一次for循环后得到n=1,
第二次for循环得到n=1*10+2=12,
第三次for循环后得到n=12*10+3=123 */
return n;
}
/*atoi函数:将字符串s转换为相应的整型值*/
int atoi(char s[])
{
int i,n;
n=0;
for(i=0;s[i]>='0'&&s[i]<='9';++i)
n=10*n+(s[i]-'0'); /* 此处‘10*n’,是因为最终结果n是一个整数,
要把上一次得到的n放到这一次n*10所得数之后的个位上。
例如s[3]={1,2,3},第一次for循环后得到n=1,
第二次for循环得到n=1*10+2=12,
第三次for循环后得到n=12*10+3=123 */
return n;
}
C库函数int atoi(const char *str)把参数str(要转换的字符串)所指向的字符串转换为一个整型(int型)。
该函数返回转换后的长整型,如果没有执行有效的转换,则返回零。
该函数返回转换后的长整型,如果没有执行有效的转换,则返回零。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int val;
char str[20];
strcpy(str,"123456789");
val = atoi(str);
printf("字符串值 = %s, 整型值 = %d\n",str, val);
strcpy(str,"www.baidu.com");
val = atoi(str);
printf("字符串值 = %s, 整型值 = %d\n",str, val);
return(0);
}
{
int val;
char str[20];
strcpy(str,"123456789");
val = atoi(str);
printf("字符串值 = %s, 整型值 = %d\n",str, val);
strcpy(str,"www.baidu.com");
val = atoi(str);
printf("字符串值 = %s, 整型值 = %d\n",str, val);
return(0);
}
上例的编译结果为:
字符串值 = 123456789, 整型值 = 123456789
字符串值 = www.baidu.com, 整型值 = 0
字符串值 = 123456789, 整型值 = 123456789
字符串值 = www.baidu.com, 整型值 = 0