[英]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.