如何将一个c 将整数转成字符串定长的字符串

编程实现输入一个整数转换为字符串输出
如:编写函数,输入一个整数,将其转换为字符串输出。例如,输入整数 86556 ,输出字符串
"86556" 。
首先确定函数头,函数输入一个 long 型整数,输出一个 char 型字符数组,
因此可以定为 void IntInvertToChar(long
lNum,char chWord[]) 。
注意这里的整数可能比较大,不要定为 int 型。
函数中,可以首先利用循环和 % 和 / 运算符,依次取得整数的每个位。思路如下:例如
86556 ,我们可以将其对 10 取余,得到个位 6 ;将 86556 除 10 余 8655 ,继续对 10 取余,得到十位 5
; … … 以此类推,直到该数变为 0 为止。这样就可以将整数的每个位分离出来。
在上述的循环过程中,将分离出的数字依次保存到字符数组中。但是要注意,字符数组中保存的是字符,是数字的
ASCII 码,而不是数字本身的值。因为 ASCII 码表中阿拉伯数字的码值是连续的,因此一个常用的技巧是,字符 0
加数字值即为该数字的 ASCII 码值。
上述过程结束后,字符数组里存放了整数的每个位,但是不符合题目的要求,顺序正好相反。
这可以用一个循环对数组进行转置:字符串第一个元素和最后一个元素对换;第二个元素和倒数第二个元素对换;
… … 程序循环进行 字符串长度 /2 次(如果字符串长度为奇数,中间元素正好不用处理)。
问题中的常量:
问题的输入:
问题的输出:
char chWord[50]
1 .初始化变量 lNum ;
2 .调用函数得到字符串;
3 .程序输出结果后退出。
步骤 2 的细化
2 . 1 初始化临时变量
2 . 2 lNum!=0 时,循环执行得到各个位的数字
2 . 2 . 1 转换数字 ASCII 码
2 . 2 . 2 i 变量增 1
2 . 2 . 3 lNum=lNum/10 ,本步骤的目的有两个,一是结束循环,二是正确的得到数字
2 . 3 字符串最后加标志
2 . 4 循环进行数组的逆序
2 . 5 结束
程序执行流程图
#include&stdio.h&
#include&stdlib.h&
int main()
char chWord[50];
void IntInvertToChar(long lNum,char *chWord);
printf("please input an Integer:");
scanf("%ld",&lNum);&&&
IntInvertToChar(lNum,chWord);
&&& printf("The
converted string is:");
printf("%s\n",chWord);&&
system("pause");
&& return 0;
IntInvertToChar(long lNum,char *chWord)
int i=0,j;
while(lNum!=0)
chWord[i]=lNum+'0';
lNum=lNum/10;&&&&&
chWord[i]='\0';
for(j=0;j&i/2;j++)
&&&&&&&&&&
chTemp=chWord[j];
&&&&&&&&&&
chWord[j]=chWord[i-1-j];
&&&&&&&&&&
chWord[i-1-j]=chT
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。C语言实现把字符串转换成整数@函数名称:atol;函数原型:longatol(char*str);函数功能:将字符串转换成一个长整数函数返回:转换;参数说明:str-待转换为长整型的字符串所属文件;;char*str=\l=atol(lstr);;printf(\return(0);};把字符串转换成整数收藏;题目:输入一个表示整数的字符串,把该
C语言实现把字符串转换成整数
@函数名称:
long atol(char *str)
将字符串转换成一个长整数
转换后的数值
str-待转换为长整型的字符串
int main()
char *str =\
l=atol(lstr);
return(0);
} 把字符串转换成整数 收藏
题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串\,则输出整数345。 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程序员就这道题写出的代码有很大区别,可以说这道题能够很好地反应出程序员的思维和编程习惯,因此已经被包括微软在内的多家公司用作面试题。建议读者在往下看之前自己先编写代码,再比较自己写的代码和下面的参考代码有哪些不同。 首先我们分析如何完成基本功能,即如何把表示整数的字符串正确地转换成整数。还是以\作为例子。当我们扫描到字符串的第一个字符'3'时,我们不知道后面还有多少位,仅仅知道这是第一位,因此此时得到的数字是3。当扫描到第二个数字'4'时,此时我们已经知道前面已经一个3了,再在后面加上一个数字4,那前面的3相当于30,因此得到的数字是3*10+4=34。接着我们又扫描到字符'5',我们已经知道了'5'的前面已经有了34,由于后面要加上一个5,前面的34就相当于340了,因此得到的数字就是34*10+5=345。 分析到这里,我们不能得出一个转换的思路:每扫描到一个字符,我们把在之前得到的数字乘以10再加上当前字符表示的数字。这个思路用循环不难实现。 由于整数可能不仅仅只含有数字,还有可能以'+'或者'-'开头,表示整数的正负。因此我们需要把这个字符串的第一个字符做特殊处理。如果第一个字符是'+'号,则不需要做任何操作;如果第一个字符是'-'号,则表明这个整数是个负数,在最后的时候我们要把得到的数值变成负数。 接着我们试着处理非法输入。由于输入的是指针,在使用指针之前,我们要做的第一件是判断这个指针是不是为空。如果试着去访问空指针,将不可避免地导致程序崩溃。另外,输入的字符串中可能含有不是数字的字符。每当碰到这些非法的字符,我们就没有必要再继续转换。最后一个需要考虑的问题是溢出问题。由于输入的数字是以字符串的形式输入,因此有可能输入一个很大的数字转换之后会超过能够表示的最大的整数而溢出。 现在已经分析的差不多了,开始考虑编写代码。首先我们考虑如何声明这个函数。由于是把字符串转换成整数,很自然我们想到: int StrToInt(const char* str); 这样声明看起来没有问题。但当输入的字符串是一个空指针或者含有非法的字符时,应该返回什么值呢?0怎么样?那怎么区分非法输入和字符串本身就是”0”这两种情况呢? 接下来我们考虑另外一种思路。我们可以返回一个布尔值来指示输入是否有效,而把转换后的整数放到参数列表中以引用或者指针的形式传入。于是我们就可以声明如下: bool StrToInt(const char *str, int& num); 这种思路解决了前面的问题。但是这个函数的用户使用这个函数的时候会觉得不是很方便,因为他不能直接把得到的整数赋值给其他整形变量,显得不够直观。 前面的第一种声明就很直观。如何在保证直观的前提下当碰到非法输入的时候通知用户呢?一种解决方案就是定义一个全局变量,每当碰到非法输入的时候,就标记该全局变量。用户在调用这个函数之后,就可以检验该全局变量来判断转换是不是成功。 下面我们写出完整的实现代码。参考代码: enum Status {kValid = 0, kInvalid}; int g_nStatus = kV /////////////////////////////////////////////////////////////////////// // Convert a string into an integer /////////////////////////////////////////////////////////////////////// int StrToInt(const char* str) {
g_nStatus = kI
long long num = 0;
if(str != NULL)//至少保证字符串不为空
const char* digit =//用了一下中间变量,保存原始字符串,防止被破坏
// the first char in the string maybe '+' or '-'
bool minus =
if(*digit == '+')//通过第一个字符判断是正是负
else if(*digit == '-')
// the remaining chars in the string
while(*digit != '\\0')//字符串结束标志
if(*digit >= '0' && *digit <= '9')
num = num * 10 + (*digit - '0');
// overflow
if(num > std::numeric_limits::max())//整数溢出的情况
// if the char is not a digit, invalid input
if(*digit == '\\0')
g_nStatus = kV
num = 0 -//转化为负数的方式
return static_cast(num); } 讨论:在参考代码中,我选用的是第一种声明方式。不过在面试时,我们可以选用任意一种声明方式进行实现。但当面试官问我们选择的理由时,我们要对两者的优缺点进行评价。第一种声明方式对用户而言非常直观,但使用了全局变量,不够优雅;而第二种思路是用返回值来表明输入是否合法,在很多API中都用这种方法,但该方法声明的函数使用起来不够直观。 最后值得一提的是,在C语言提供的库函数中,函数atoi能够把字符串转换整数。它的声明是int atoi(const char *str)。该函数就是用一个全局变量来标志输入是否合法的
Java语言的变换 1、如何将字符串String转化为整数int
int i = Integer.parseInt(str);
int i = Integer.valueOf(my_str).intValue();
注: 字串转成Double, Float, Long的方法大同小异。
2、如何将字符串String转化为Integer
Integer integer=Integer.valueOf(i) 3、如何将整数 int 转换成字串 String?
答:有三种方法:
String s = String.valueOf(i);
String s = Integer.toString(i);
String s = \注:Double, Float, Long 转成字串的方法大同小异。 4、如何将整数int转化为Integer
Integer integer=new Integer(i) 5、如何将Integer转化为字符串String
Integer integer=String() 6、如何将Integer转化为int
int num=Integer.intValue() 7、如何将String转化为BigDecimal
BigDecimal d_id=new BigDecimal(str) 三亿文库包含各类专业文献、中学教育、幼儿教育、小学教育、高等教育、文学作品欣赏、行业资料、外语学习资料、10字符串转换成整数等内容。 
 JAVA 的整型与字符串相互转换 JAVA 的整型与字符串相互转换 1 如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]...  c语言中字符串转换为整数_理学_高等教育_教育专区。c语言中字符串转换为整数语言中字符串转换为整数, c 语言中字符串转换为整数,整数转换为字符串使用说明 2009-...  请编写一个函数fun(),它的功能是将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。 例如,若输入字符串“-1234”,则函数把它...  能将整数转换为字符串而且与 ANSI 标准兼容 的方法是使用 sprintf()函数,请看下例: #include&stdio.h& # include &stdlib. h& void main (void); void ...  范例 /* 将字符串 a 与字符串 b 转换成数字后相加*/ #include&stdlib.h&...以下是用 itoa()函数将整数转换为字符串的一个例子: # include &stdio.h& ...  例9-15 编写函数,输入一个整数,将其转换为字符串输出。例如,输入整数 86556, 输出字符串&86556&。 首先确定函数头,函数输入一个 long 型整数,输出一个 char ...  语言实现把字符串转换成整数 标签: 杂谈 分类: C_Concept @函数名称: atol 函数原型: long atol(char *str) 函数功能: 将字符串转换成一个长整数 函数返回:...  把字符串转换成整数_研究生入学考试_高等教育_教育专区。把字符串转换成整数 . 【题目】输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串 ...

我要回帖

更多关于 c 将ipv6 转成整数 的文章

 

随机推荐