我有char * source,我想從中提取subsrting,我知道從符號「abc」開始,並在源結束處結束。與strstr我可以得到poiner,但不是位置,沒有位置,我不知道子字符串的長度。我怎樣才能得到純C的子字符串的索引?獲取子字符串的索引
回答
如果你有指向字符串的第一個字符,和子在源字符串的結尾結束,則:
strlen(substring)
會給你它的長度。substring - source
會給你開始索引。
謝謝大家!我不能投票,因此我只能說謝謝 – Country
char *source = "XXXXabcYYYY";
char *dest = strstr(source, "abc");
int pos;
pos = dest - source;
oops'source =「abracadabcabcabcabc」':) – pmg
@pmg - 無所謂 - 「以'abc'開頭」仍然創建正確的結果作爲strstr ()停止查找,一旦它成功 – KevinDTimm
我想用malloc分配一個數組只是爲了使示例更完整。當然,我也會做一些錯誤檢查;-) –
形式上,其它的是正確的 - substring - source
確實開始索引。但是你不需要它:你可以使用它作爲source
的索引。因此,編譯器計算source + (substring - source)
作爲新地址 - 但只有substring
對於幾乎所有用例都足夠了。
只是提示優化和簡化。
謝謝大家!我不能投票的原因,所以我只能說,謝謝你 – Country
的開始和結束字
string search_string = "check_this_test"; // The string you want to get the substring
string from_string = "check"; // The word/string you want to start
string to_string = "test"; // The word/string you want to stop
string result = search_string; // Sets the result to the search_string (if from and to word not in search_string)
int from_match = search_string.IndexOf(from_string) + from_string.Length; // Get position of start word
int to_match = search_string.IndexOf(to_string); // Get position of stop word
if (from_match > -1 && to_match > -1) // Check if start and stop word in search_string
{
result = search_string.Substring(from_match, to_match - from_match); // Cuts the word between out of the serach_string
}
問題是關於C,而不是C++ –
在C + +有更簡單的方法來做到這一點 - 使用字符串::查找方法和字符串構造函數字符串(常量字符串&str ,size_t pos,size_t n = npos); – Alecs
這裏切一個字一個字符串的函數是有偏移的特徵對strpos函數的C版...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int strpos(char *haystack, char *needle, int offset);
int main()
{
char *p = "Hello there all y'al, hope that you are all well";
int pos = strpos(p, "all", 0);
printf("First all at : %d\n", pos);
pos = strpos(p, "all", 10);
printf("Second all at : %d\n", pos);
}
int strpos(char *hay, char *needle, int offset)
{
char haystack[strlen(hay)];
strncpy(haystack, hay+offset, strlen(hay)-offset);
char *p = strstr(haystack, needle);
if (p)
return p - haystack+offset;
return -1;
}
- 1. 獲取字符串索引
- 2. 通過搜索字符串獲取子字符串文本來獲取字符串的子字符串?
- 3. 獲取字符串中最後一個子串索引後的字符
- 4. 獲取第n個索引字符串
- 5. 獲取索引位置從字符串
- 6. 通過索引獲取字符串 - Java
- 7. 子索引成字符串
- 8. 獲取字符從字符串列表索引到的字符
- 9. 從索引0提取子字符串直至搜索字符
- 10. 基於xsl/xslt中的特定索引獲取子字符串
- 11. 獲取第一個包含子字符串的索引?
- 12. hw搜索索引字符串列表中的子字符串?
- 13. 從字符串獲取子字符串__
- 14. 獲取字符索引
- 15. 獲取字符串中特定索引的字符c#
- 16. 獲取solaris上子串的索引
- 17. 獲取查詢命中索引 - 搜索字符串的前綴
- 18. Python:如何從沒有索引的字符串中獲取子串?
- 19. KDB獲取子字符串
- 20. JQuery獲取子字符串?
- 21. 獲取所有字符串中的任意字的索引
- 22. 查找字符串中子字符串的所有索引
- 23. Noob,創建字符串方法的索引和子字符串
- 24. 每次遍歷一個字符串&提取子字符串的指定索引
- 25. 獲取子串給定的字符串
- 26. 字符串子字符串索引可能是字符串的長度
- 27. 索引字符串?
- 28. 字符串索引
- 29. 索引字符串
- 30. 如何在字符串中反向搜索以獲取索引?
你可以用指針來做你想要的,而不用擔心長度。 – pmg
@Country - 沒有理由不投票(這可能會限制頻率) – KevinDTimm