我有一個字符串作爲const char *str = "Hello, this is an example of my string";
串解析發生在C
我怎麼能得到的第一個逗號後面的一切。因此,對於此實例:this is an example of my string
感謝
我有一個字符串作爲const char *str = "Hello, this is an example of my string";
串解析發生在C
我怎麼能得到的第一個逗號後面的一切。因此,對於此實例:this is an example of my string
感謝
你可以做一些類似您發佈什麼東西:
char *a, *b;
int i = 0;
while (a[i] && a[i] != ',')
i++;
if (a[i] == ',') {
printf("%s", a + i + 1);
} else {
printf("Comma separator not found");
}
隨着strstr
你可以這樣做:
char *a = "hello, this is an example of my string";
char *b = ",";
char *c;
c = strstr(a, b);
if (c != NULL)
printf("%s", c + 1);
else
printf("Comma separator not found");
const char *result;
for(result = str; *result; result++)
if(*result == ',')
{
result++;
break;
}
//result points to the first character after the comma
此代碼後,result
指向字符串逗號後立即開始。或者到最後的'\ 0'(空字符串),如果在字符串中沒有逗號。
這不區分「無逗號」和「逗號是字符串的最後一個字符」。 – 2010-04-18 23:14:00
@Adam Rosenfield: 而且應該嗎? 「一個不存在的逗號之後的所有內容」都是「沒有」。當然,這取決於所需代碼的邏輯,但在很多情況下,如果您希望分隔符在那裏,最好返回一個空結果,而不是引發錯誤條件並需要額外的代碼來處理它。 – slacker 2010-04-18 23:23:57
既然你想要的原始字符串的尾部,沒有必要複製或修改任何東西,所以:
#include <string.h>
...
const char *result = strchr(str, ',');
if (result) {
printf("Found: %s\n", result+1);
} else {
printf("Not found\n");
}
如果你想想法如何自己(有用的做,如果你以後想要做的事相似但不完全相同),請看an implementation of strchr。
這會給你一個字符串指向*逗號,而不是逗號後的字符。 – 2010-04-18 23:13:19
謝謝,我寫了一行代碼,然後將其更改爲處理NULL返回並在此過程中丟失+1。固定。 – 2010-04-18 23:16:17
Hooray,不重寫'strchr()'的答案。使用你的標準庫,人! – caf 2010-04-19 01:05:27
你有正確的想法,以下爲節目是做這件事:
#include <stdio.h>
#include <string.h>
static char *comma (char *s) {
char *cpos = strchr (s, ',');
if (cpos == NULL)
return s;
return cpos + 1;
}
int main (int c, char *v[]) {
int i;
if (c >1)
for (i = 1; i < c; i++)
printf ("[%s] -> [%s]\n", v[i], comma (v[i]));
return 0;
}
它產生了以下的輸出:
$ commas hello,there goodbye two,commas,here
[hello,there] -> [there]
[goodbye] -> [goodbye]
[two,commas,here] -> [commas,here]
什麼* B用的?你的strchr調用應該是a = strchr(str,','),然後你應該可以使用a作爲你的字符串指針。你必須提前一個(a ++)來跳過角色。 – Joe 2010-04-18 23:01:26
在這裏發佈時不要使用僞代碼 - 或者根本不要使用僞代碼。 – 2010-04-18 23:04:09
請注意,「第一個逗號後的所有內容」都包含逗號後面的**空格**。 – slacker 2010-04-18 23:10:09