2017-08-02 9 views
-5

char配列を返す関数(引数なし)を作成する必要があります。配列の長さはユーザーによって定義されます。 gets()機能を使用することはできません。コードの後ポインタを介してchar配列を返す関数

char get() 
{ 
    int size; 

    char *str=new char[size]; 
    int i,l; 

    cout<<"enter size"; 
    cin>>size; 

    for(i=0;i<size;i++) 
    { 
     str[i]=getche(); 

    } 

    str[size]='\0'; 

    return str[size]; 
} 
+2

できるだけ早く教科書を読む必要があります。 – Slava

+1

'int size; char * str = new char [size]; 'ここで' size'の値は何ですか? – NathanOliver

+0

'std :: string'または' std :: vector 'を返します。 * 'char'のCスタイルの配列へのポインタを返しません。 *お願いします*! –

答えて

0

有用であり得る:

char* get() 
{ 
    int size; 

    cout<<"enter size"; 
    cin>>size; 
    size++; //For `\0` character 

    char *str=new char[size]; 

    for(int i=0;i<size;i++) 
    { 
     str[i]=getche(); 
    } 

    str[size]='\0'; 

    return str; 
} 

cstringヘッダファイルで提供されstrlen()関数を使用し、(例えばmain()にするための)関数を呼び出すことで文字列のサイズを取得します。

+0

ありがとうございますが、私は再利用を別の機能に使用する必要があります。このコードでは などです。 int length(char * str) { char i;for(i = 0; str [i]!= '\ 0'; ++ i); // printf( "文字列の長さ:%d"、i); return i; } –

+0

関数は1つの値しか返すことができないため、したがって、文字列または文字列の長さを返すことができます。上記のように関数を呼び出す際に長さを計算できるので、文字列を返すことをお勧めしました。しかし、長さを返す場合は、関数のシグネチャを 'int get(char ** str)'に変更し、それに応じて 'str'変数の使用を変更することができます。変数 'str'の内容が必要でない場合は、上のコードから' size-1'を返す以外は現在のコードはOKです。 – cse

関連する問題