1.如何将整数转化为字符串数,而且不使用函数itoa?
#include <stdio.h>
int main(void)
{
int i=0;
int j=0;
char str[7];
char tmp[7];
int num=12345;
while(num)
{
tmp[i]=num%10+'0';
i++
num=num/10;
}
i--;
while(i>=0)
{
str[j]=tmp[i];
j++;
i--;
}
str[j]=0;
printf("string = %s \n",str);
return 0;
}
问题:如何写出一个通用的itoa出来?
2.编程实现字符串转化为整数的方法。
#include <stdio.h>
int main(void)
{
int i=0,j=0,sum=0;
char str[7]={'1','2','3','4','5','\0''};
while(str[i])
{
sum=sum*10 + (str[i]-'0');
i++ ;
}
printf("sum= %d \n",sum);
return 0;
}
3.strcpy相关问题
(1)不调用C/C++的字符串库函数,请编写函数strcpy.
(2)strcpy能把strSrc的内容复制到strDest,为什么还要char *类型的返回值?
char *strcpy(char *s1,register const char *s2)//判断s1 s2是否满足相关条件需要程序员自己负责
{
//assert((s1!=NULL)&&(s2!=NULL));
register char *p=s1;//register 为存储类型,目的是告诉编译器将相关的变量存储在高速度的寄存器中,一般是为了提高程序运行速度,
//如果编译器无法实现这个目标,就默认按照auto存储类型处理。
while (*p++ = *s2++)
;
return s1;
}
之所以有char *类型的返回值,是为了实现链式表达式,返回具体值
如:
int length=strlen(strcpy(strDest,strSrc));
4.编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是"abcdefghi",如果n=2,移位后应该是"hiabcdefg".
#define MAX_LEN 20
void LoopMove(char *pStr, int steps)
{
char tmp[max_LEN];
int n;
n=strlen(pStr)-steps;
strcpy(tmp,pStr+n);
*(pStr+n)="\0";
strcpy(tmp+steps,pStr);
strcpy(pStr,tmp);
}
5.strcat标准库函数的实现
char *strcat(char *s1,const char *s2)//程序员需保证s1所指向的内存空间足以容纳最终的结果
{
char *p=s1;
while(*p)//to the end
p++;
while(*p++=*s2++)
;
return s1;
}
本文介绍了如何在C语言中实现整数与字符串之间的转换,包括自定义itoa函数、字符串转整数、字符串拷贝及拼接等实用技巧,并提供了一个字符串循环右移的实现方法。
273

被折叠的 条评论
为什么被折叠?



