2013-05-10 111 views
-2

如何獲取當前字符索引(C)?如何獲得C中字符串的字符索引?

char *s = "abcdefghijklmopqrstuvwxyz"; 
*s++; 
*s++; 
*s++; 
printf("%c\n", *s); // print character 'd' 
printf("%d\n", s - *s); // should print 3, but not working 

我期望獲得索引(3),但如何以編程方式編碼?

+0

char s [] =「abc」?它不適用於* s ++(錯誤:作爲增量操作數所需的左值)。 – dns 2013-05-10 17:37:15

回答

3
char *s = "abcdefghijklmopqrstuvwxyz"; 
char *t = s; 
*s++; 
*s++; 
*s++; 
printf("%c\n", *s); // print character 'd' 
printf("%d\n", s - t); // print 3 

應該這樣做。

+0

謝謝,應該是s-t輸出:3,t-s輸出:-3 – dns 2013-05-10 17:09:02

+0

對,對不起..... – 2013-05-10 17:10:03

+0

有什麼不對?這是正確的答案。 – dns 2013-05-10 17:16:08

1

您需要將另一個指針(而不是s指針)移動到第三個索引或任何索引。然後你可以做指針減法,其中的差值是指針之間字節元素的數量。

const char s[] = "asdf"; 
const char *s2 = s + 2; 
printf("%d", s2 - s); // 2 
+0

我使用* s ++內循環 – dns 2013-05-10 17:19:33

+0

@dns這很好:) – RandyGaul 2013-05-10 17:20:27

相關問題