0

私は C++ は初めてですが、長年のプログラミング経験があります。ポインターに到達するまで、私の学習はすべて非常に優れていました。簡単なことを達成するのに苦労していることを認めなければなりません。たとえば、配列データをポインターに格納してからポインターをリストすることに失敗した後、理解を助けるために以下で基本的なことを行いました。これでは、名前のリストを配列ポインター (またはそのようなもの) に入力し、メモリの場所から値のリストを取得することを目指しています。a) リクエストの入力とポインターへの保存を許可するためにこれを配置することができません b) ポインターをループすると、名前の最初の文字のみが表示されます。誰かが私が上記を達成するのを手伝ってくれるなら、それはポインターの私の最大のブレークスルーになるでしょう.

助けてください;

コード

#include "stdafx.h"
#include<iostream>
#include<cstring>
#include<cctype>
using namespace std;

int i=0;
int main(){
    char* studentNames[6]={"John Xyy","Hellon Zzz","Wendy Mx","Beth Clerk", "Jane Johnson", "James Kik"};
    int iloop = 0;
    //loop through and list the Names
    for(iloop=0;iloop<6;iloop++){
        cout<<"Student :"<<studentNames[iloop]<<"               Addr:"<<&studentNames[iloop]<<endl;
    }
    cout<<endl;
    system("pause");
    //Now try and list values stored at pointer memory location
    int p=0;
    for (p=0;p<6;p++){
        cout<<*studentNames[p];
    }
    cout<<endl;
    system("pause");
    return(0);

}
4

1 に答える 1

0

a) I am not able to put this to allow request input and store to pointer

次のようにfgets()を使用して stdin から文字列を読み取ります。文字へのサイズ 6 のポインターの配列があります。文字列の長さがそれぞれ 100 文字であると仮定すると、標準入力から読み取られた文字列ごとに、バッファー メモリが割り当てられstudentNames、ポインターの配列に毎回コピーされます。

char *studentNames[6];
char input[100];

for (int str = 0; str < 6; str++) {
    if (fgets(input, sizeof(input), stdin) != NULL) {
         studentNames[str] = (char *)malloc(strlen(input));
         strcpy(studentNames[str], input);
    }
}

b) when I loop through a pointer, it only displays the first characters of the names.

//Now try and list values stored at pointer memory location
int p = 0;
for (p = 0; p < 6; p++){
    cout<<*studentNames[p];  
}

上記の文字列印刷では、最初の文字のみを印刷するループ内で毎回ポインターの配列を*studentNames[p]逆参照します。文字列リテラルを出力するものpthに置き換えます。studentNames[p]

于 2013-11-07T17:50:22.940 に答える