从c中删除输入字符串中的字符

时间:2015-05-04 16:06:52

标签: c string memmove

我的目标是从C中的字符串中删除用户定义的字符数量。

代码要求用户输入一个字符串,指明他们想要删除的字符的开头,并指出他们想要移除的位置中有多少个字符&然后代码显示结果。

我希望有人可以提出一个代码来执行所需的功能和逐步信息,因为我昨天才开始编码

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>


 int a,b;
 char text[20];
 char new_sentence[20];
 int how_much;

 void removeString(char* text, int b, int how_much);
 int main(void)

 {


  printf("\nEnter your sentence: ");
  gets(text);
  printf("\nWhere to start: ");
  scanf("%d",&a);
  printf("\nHow many characters do you want to remove: ");
  scanf("%d",&how_much);

  removeString(char* text, int b, int how_much);

  printf("\nNew sentence: %s",text);

  return 0;
  }


  void removeString(char* text, int b, int how_much)
   {
     how_much = b - a;

     memmove(&text[a], &text[b],how_much);

     }

1 个答案:

答案 0 :(得分:0)

我不会为你编写代码,因为你提供的示例代码确实是一个最小的例子,但这些是你应该做的事情:

  1. removeString()功能签名(及其正文)更改为removeString(char* your_string, int where_to_start, int how_much_to_cut)。请注意,在C char[]中相当于char*,在您的情况下,最好将char*传递给您的函数,因为您将拥有可变长度的字符串。
  2. 使用strlen()函数计算传递给char*函数的字符串长度(即removeString())。您可以根据以这种方式计算的长度对参数进行错误检查。
  3. 请注意,您可能需要在字符串中间剪切一些字符 - 因此,我会计算结果字符串的长度以及realloc() char* your_stringmalloc()新字符串,并从removeString()函数返回。
  4. 您可以通过关注this webpage的信息,为您的计划添加输入参数(字符串,剪切位置,要剪切的字符数)。
  5. 修改

    您可以在下面看到问题的解决方案:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define MAX_LEN 20
    
    char* removeString(char* text, int where_to_start, int how_much)
    {
        // You should consider all the special (invalid) cases here
        // I'm demonstrating how to handle common case
        size_t len = strlen(text);
        char* new_string = (char*) malloc(sizeof(char) * len - how_much);
        memcpy(new_string, text, where_to_start);
        memcpy(new_string+where_to_start, text+where_to_start+how_much, len-where_to_start-how_much);
        return new_string;
    }
    
    int main(void)
    {
        int a,b;
        char buffer[MAX_LEN];
    
        printf("Enter your sentence:\n");
        scanf("%s", buffer);
    
        printf("Where to start:\n");
        scanf("%d",&a);
        printf("How many characters do you want to remove:\n");
    
        scanf("%d",&b);
    
        char* removed = removeString(buffer, a, b);
    
        printf("New sentence: %s\n", removed);
    
        free(removed);
        return 0;
    }