2016-11-26 3 views
-2

で文字列からの手紙を、私はいくつかの文字列からインデックスIDXで手紙を取得したい取得には、以下のC-機能によりC

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

エラーは、結果を印刷する方法にある必要があります。例コードが答えを捨てます。問題を示す[最小、完全、および検証可能な例](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

を私が...それは代わりに、%sの中の%cのようにそれを持ってしまいました印刷機能。

0

あなたはchar *を返していますが、戻り値の型はcharです。 返信文をreturn str[idx];に変更する

また、なぜその機能が必要ですか? s[idx]と書くことができます。私は理由が不思議です。

関連する問題