繁体   English   中英

如何删除C字符串中的单词

[英]How to remove word in C string

我目前有一个char数组,用于存储文件名。

eg. folder1/subfolder/subsubfolder/file1.txt

我希望能够删除此char数组中的第一个文件夹名称。 所以它变成

subfolder/subsubfolder/file1.txt

我知道basename()会使输出file1.txt,但是我需要文件夹结构,而不是第一个。

最好的方法是什么? 使用/作为轮廓字符?

  • 编辑*好吧,显然我不能在不详细介绍整个怪胎程序大声笑的情况下询问字符数组。

我想知道是否有一种简单的方法可以从一开始就缩短char数组。 我正在开发一个文件复制程序,如果我可以通过放弃第一个文件夹名称来缩短完整文件的位置,那么这将使我的生活更加轻松。 在编程方面,我是一个完全菜鸟,并且认为这对于解决本站点上的向导可能是一个简单的方法。 我没有在最初的帖子中放置代码,因为我不知道甚至是一个功能是否可以满足我的要求。 抱歉 但是,如果您必须拥有代码,则在这里...

        strcpy(sourcePath, Path); 
    strcat(sourcePath, slash);

这显然不能满足我的需要。

您可以使用strpbrk

const char * strpbrk ( const char * str1, const char * str2 );

http://en.cppreference.com/w/c/string/byte/strpbrk

它返回指向str2中任何字符的第一个出现在str1中的指针,如果没有匹配项,则返回空指针。

在您的情况下str2= "/"

// You can use it in the following way
const char* f = strpbrk(pathname, str2);
int sz = strlen(pathname) - strlen(f); // +/- 1.
new_path_name = strncpy(new_path_name, f, sz);

您可以使用来帮助您子字符串:

char subbuff[5]
memcpy( subbuff, &buff[10], 4 );
subbuff[4] = '\0';

可以帮助您找到以下内容的索引:

size_t strcspn(const char * str1,const char * str2);

和一个例子:

/* strcspn example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] = "fcba73";
  char keys[] = "1234567890";
  int i;
  i = strcspn (str,keys);
  printf ("The first number in str is at position %d.\n",i+1);
  return 0;
}

您可以使用此部分从数组中删除特定单词

for (i = 0; i < slength; i++)
{
    if (str[i] == word[j])
        j++;
    else
        j = 0;

    if (j == wlength)
        for (t = 0; t <= wlength; t++)
        {
            for (k = 0; k < slength; k++)
                str[i - j + k] = str[i - j + k + 1];
        }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM