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()从标准输入读取字符串,如下所示。您有大小为 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 回答