数字前后加上符号“*”----c代码

简介: 数字前后加上符号“*”----c代码

今天看到一道华为的题,描述如下


微信图片_20230116142103.png


以下是c代码,在vs2003上调试成功,参考了网上大神的例子,没有用链表没有用c++,这道题本来是要求使用c++完成的,我一做嵌入式的码农,对C语言情有独钟,因此在这里使用c语言。


注:所有的变量最好是在函数前面进行定义,否则会出现C2143的错误, error C2143: 语法错误 : 缺少“;”(在“类型”的前面),这个我在另一篇博客也有说过。

</pre><pre name="code" class="html">#include <stdio.h>
#include <stdlib.h>
int IsDigital(char c)
{
  if ( c >= '0' && c <= '9')  
  {
    return 1;
  }
  return 0;
}
void InsertAsterisk(const char * str ,char *pNew )
{
  const char *pStr = str;
  char *pNewTmp = pNew;
  while (*pStr)
  {
    if ((IsDigital(*pStr) && !IsDigital(*(pNewTmp-1))) ||
      (!IsDigital(*pStr) && IsDigital(*(pNewTmp-1))))   // 状态改变时就插入'*'号
    {
      *pNewTmp++ = '*';
    }
    *pNewTmp++ = *pStr++;
  }
  if (IsDigital(*(pNewTmp-1)))    // 处理末尾是数字字符的情况
  {
    *pNewTmp++ = '*';
  }
  *pNewTmp = 0;   // 加上结束符
}
int main()
{
  char strOld[100];// "fds43d435f";
  char strNew[150] = {0}; 
  printf("please input......\n");
    gets(strOld);
               // 新串长度要足够插入所有*号
    InsertAsterisk(strOld ,strNew);
  puts(strNew);
    return 0;
}

打印结果如下

微信图片_20230116142246.png

目录
相关文章
|
8月前
|
存储 程序员 C语言
C语言:字符输出
C语言:字符输出
|
8月前
|
C#
C#学习相关系列之常用符号介绍
C#学习相关系列之常用符号介绍
|
3月前
|
C语言
【C语言】AscII码值详解
【C语言】AscII码值详解
239 1
|
3月前
|
C语言
C语言字符(串)函数
C语言字符(串)函数
|
8月前
|
C语言
【C语言】字符分类函数与字符转换函数
【C语言】字符分类函数与字符转换函数
72 1
|
8月前
|
存储 C语言
C语言字符输出函数
C语言字符输出函数
102 0
|
8月前
|
算法 C语言
C语言中的数字整除问题居然如此简单
C语言中的数字整除问题居然如此简单
|
C语言
C语言:二进制、八进制、十六进制整数的书写及输出
C语言:二进制、八进制、十六进制整数的书写及输出
|
存储 编译器 C语言
【C语言】整数的二进制以及移位操作符
【C语言】整数的二进制以及移位操作符
122 0
|
存储 程序员 C语言
初识c语言系列-2-常,变量,字符(串),转义字符和注释
初识c语言系列-2-常,变量,字符(串),转义字符和注释