c - 使用指针从字符串中删除重复项

标签 c string pointers

#include<stdio.h>
char *removedps(char *x)
{
    int Ar[256] = {0};
    int ip=0;
    int op=0;
    char temp;
    while(*(x+ip))
    {
       temp  = (*(x+ip));
       if (!Ar[temp])  {
         Ar[temp] = 1;
         *(x+ip) = *(x+op);
         op++;
       }
       ip++;
       *(x+op) = '\0';
    }
  return x;
}

int main()
{
  char lo[] = "0001";
  printf("%s",removedps(lo));    
}

我的代码不工作 我已经努力查看错误 我得到的只是第一个字符。 我的想法很简单 制作一个包含 256 个位置的数组 将零插入其中 然后为字符串中的每个字符插入 1(在数组的那个位置)

最佳答案

你的作业看起来是这里的错误。

op是“出位”,ip是“入位”

应该是这样

*(x+op) = *(x+ip);

不是相反。

关于c - 使用指针从字符串中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8872788/

相关文章:

c - 我如何为我的个人结构初始化一个字符串

C Switch 语句 CMSIS FreeRTOS

java - 使用 string.split 方法读取 .csv 文件

java - 在大约 100 个字符和下一个符号后分割字符串 (Java)

java - JasperReports 以 XML 作为输入 --- 获取 Inputstream 空指针异常

c - 初始化结构数组 - C 代码错误

c - 该程序中的 fgets

带有位图字体的 C 头文件

c++ - 初学者 C++ - 字符串比较

c - 对字符串进行排序并设置它