常见C语言面试题之一:字符串代替、字符串转换整数

  1. #include "stdafx.h"
  2. using namespace std;
  3. //--------字符替代问题
  4. char* Translate(char* pSrc, const char cFindChar, const char* pReplaceStr, char* pTag)  
  5.   {  
  6.           char* p = NULL ;  
  7.           int lLen = (int)strlen (pReplaceStr) ;  
  8.            
  9.           for (p = pSrc; *p!='/0'; p++) 
  10.           {  
  11.               if (cFindChar == *p)  
  12.               {  
  13.                   strcpy(pTag, pReplaceStr) ;  
  14.                   pTag += lLen ;  
  15.               }  
  16.               else  
  17.               {  
  18.                   *pTag++ = *p;  
  19.               }  
  20.           }  
  21.           return pTag;  
  22.   }  
  23. //--------字符串转换为整数
  24. int myAtoi(const char* s){
  25.     int result = 0;
  26.     int flag = 1;
  27.     int i = 0;
  28.     while(isspace(s[i]))
  29.        i++;
  30.     if(s[i] == '-'){
  31.        flag = -1;
  32.        i++;
  33.     }
  34.     if(s[i] == '+')
  35.        i++;
  36.     while(s[i] != '/0'){
  37.        if((s[i] > '9') || (s[i] < '0'))
  38.         break;
  39.        int j = s[i] - '0';
  40.        result = 10 * result + j;
  41.        i++;
  42.     }
  43.     result = result * flag;
  44.     return result;
  45. }
  46. //--------整数转换为字符串
  47.     void itoa (int n,char s[])
  48.     {
  49.         int i,j,sign;
  50.         if((sign=n)<0)//记录符号
  51.            n=-n;//使n成为正数
  52.         i=0;
  53.         do{
  54.            s[i++]=n%10+'0';//取下一个数字
  55.         }while ((n/=10)>0);//删除该数字
  56.         if(sign<0)
  57.            s[i++]='-';
  58.         s[i]='/0';
  59.         for(j=i;j>=0;j--)//生成的数字是逆序的,所以要逆序输出
  60.            printf("%c",s[j]);
  61.         printf("/n");
  62.     }
  63. int _tmain(int argc, _TCHAR* argv[])
  64. {
  65.     //--------Translate----------
  66.     char   szSrc[] =   "Hello Word!"   ;  
  67.     char   szTag[256]= {0};  
  68.     char   szRep[] ="(***)";     
  69.     char result[256] = {0};
  70.     Translate(szSrc,'o',szRep,szTag);       
  71.     for(unsigned int i=0;i<strlen(szTag);i++) result[i] = szTag[i];
  72.     printf("%s/n",szTag);
  73.     printf("%s/n",result);
  74.     //-----------------------
  75.     int i = atoi("    -321" );
  76.     printf("%d/n",i);
  77.     char ch[256]={0};
  78.     itoa(-23456, ch);   
  79.     
  80.     return 0;   
  81. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值