2016-11-26 31 views
-2

用下面的C函數,我想要檢索索引IDX從一些字符串信:檢索串字母用C

char get_letter(char *str, int idx) 
{ 
    return *(str + idx); 
} 

例如,以下內容:

char s[] = "Barack"; 
get_letter(s,2); 

應返回字母'r'。

這裏是整個程序(可執行文件的名稱是「檢索」):

int printf(const char * restrict, ...); 
char get_letter(char *, int); 

int main(int carg, const char **varg){ 
    if (carg != 2) return -1; 
    printf("%s", get_letter(varg[1],1)); 
    return 0;   
} 

char get_letter(char *str, int idx) 
{ 
return *(str + idx); 
} 

當我運行該程序:不但得不到字母「e」(例如./retrieve測試) ,我收到一條錯誤消息(「Segmentation fault:11」)。 這裏怎麼回事?

+3

錯誤必須在於您打印結果的方式:您的示例代碼會丟棄答案。請發佈顯示問題的[Minimal,Complete和Verifiable示例](http://stackoverflow.com/help/mcve)。當我printf(「%c \ n」,get_letter(s,2));'結果是期望的''r''。 –

回答

1

可能打印在C語言的字符如下:

char c = 'j'; 
printf("%c",j); 

工作代碼:

#include <stdio.h> 
#include <stdlib.h> 

char get_letter(char *str, int idx) 
{ 
    return *(str + idx); 
} 

int main() 
{ 
    char s[] = "Barack"; 
    printf("%c", get_letter(s,2)); 
    return 0; 
} 
0

我得到了它......它必須是%C而非%的打印功能。

0

你正在返回一個char *,但是你的返回類型是char。 更改您的報告信息爲return str[idx];

另外爲什麼您需要該功能?你可以寫s[idx]。我很好奇原因。