C函数删除字符串

标签 c arrays string char

在几周内参加深入的 Objective-C 类(class)之前,这里的初学者试图围绕一些基本的 C 知识,所以如果这是行人,我深表歉意。

任务是创建一个接受三个参数的函数:一个源字符串、一个从该字符串开始删除的整数,以及另一个告诉函数要删除多少字符的整数。书中给出的示例是起始字符串“the wrong son”,然后是 4 和 6,只剩下“the son”。

我的想法是根据第一个单词和第二个单词创建两个单独的字符串,然后将它们连接在一起。到目前为止,我只能提取“the”,而我的第二个 for 循环显然什么也不做。这是我目前所拥有的:

#include<stdio.h>

int main (void)
{
    char text[]="the wrong son";
    void removeString (char[], int, int);
    int s, l;

    printf("Enter starting point for removal: ");
    scanf("%d",&s);

    printf("\nEnter lenght of removal: ");
    scanf("%d",&l);

    removeString(text, s, l);

    printf("\nString after removal = %s",text);

    return 0;
}

void removeString (char s1[], int s, int l)
{

    printf("s1 = %s, s=%d, l=%d\n", s1, s, l);

    char s2[]="";
    char s3[]="";

    int i,j;

    for (; i<s; ++i)
        {
            s2[i]=s1[i];
        }

    printf("\n");

    for (; j>l; ++j)
        {
            s3[j]=s1[j];
        }

    printf("s2 = %s, s3 = %s", s2, s3);
}

我很困惑。任何帮助将不胜感激。

最佳答案

恕我直言,为此目的创建单独的数组并不是最好的方法。相反,一个更好的更清洁的方法将是

  1. 接收数组,开始索引并跳过索引值。
  2. 使用 strlen() 计算数组的长度。
  3. 将(开始索引+跳过索引)位置的值放到开始索引位置。
  4. 起始索引增加 1。
  5. 继续第 3 步和第 4 步,直到数组长度用完,即最新的(起始索引+跳过索引)指向数组中的最后一个元素。

关于C函数删除字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29783152/

相关文章:

c++ - 为什么数组 <T*, N> 的元素的默认初始化需要 C++14?

java - 非常简单的Java帐户管理

java - 如何获取新替换字符串的新值?

c - 按引用传递文件名时出错 (C)

c++ - R(macos 10.8.5),RcppArmadillo : can not find armadillo library or symbol _wrapper_ddot_

javascript - jQuery 数组显示分隔逗号

android - 在 strings.xml 中存储十六进制颜色值

c - OpenGL 窗口错误

c - 使用AVX512或AVX2最快的方法来计算所有打包的32位整数的和

arrays - 找到最大值并将其他值更改为零