2016-10-15 6 views
0

프로그램의 주된 목적은 "채널"이라는 배열 내의 값을 표시하는 것입니다.하지만 아무 것도 얻을 수없는 것 같습니다. 보여 주다. 디스플레이가 표시되면 사용자에게 네 개의 채널 중 하나를 선택하고 선택한 "채널"의 값을 표시 할 필요가 있습니다. 이것은 내가 지금까지 가지고있는 것이다. 또한 어떤 루프도 사용할 수 없습니다. 도와주세요. 배열의 내용을 표시하고 사용자가 선택하도록 프롬프트를 표시하는 방법 {C}

#include <stdio.h> 

가 // 내가 // 내가 여기있는 모든 채널과 그 값을 표시 할 배열

typedef struct 

{ 
    char* name; 
    double n; //roughness 
    double slope; 
    double width; 
    double depth; 

} CHANNEL; 


main() 
{ 

    CHANNEL channels [4] = { 
    {"Channel1", 0.035, 0.0001, 10.0, 2.0}, 
    {"Channel2", 0.020, 0.0002, 8.0, 1.0}, 
    {"Channel3", 0.015, 0.0010, 20.0, 1.5}, 
    {"Channel4", 0.030, 0.0007, 24.0, 3.0} 
    }; 

내에서 모든 값을 저장하는 구조를 사용하고 ... 내가 알고 printf를 사용해야하지만 포인터를 사용해야합니까?

printf("Please note:\n 0 = Channel 1 \n 1 = Channel 2 \n 2 = Channel 3 \n 3 = Channel 4); 

는 //이 부분은 선택된 채널을위한

printf(Pick a channel from 0-3\n"); 
    int c = 0; 
    scanf("%i", &c); 
    CHANNEL chosen = channels [c]; 

} 
+1

아무 것도 인쇄하지 않거나 사용자 입력을 요구하지 않습니다. 또한이 코드는 컴파일되지 않습니다. 실제로 무엇을 시도 했습니까? – UnholySheep

+0

왜 루프를 사용할 수 없습니까? 그렇게하는 것이 자연스러운 방법 인 것 같습니다. – usr2564301

+0

구조체의'name' 멤버는 단 하나의'char'입니다. –

답변

0

먼저 Daniel Litvak가 제안하는 변경 사항을 적용하십시오. 배열의 채널의 인덱스를 나타내는 인덱스를 사용자에게 메시지를 표시합니다

int main(void) { 

    // ... 
    printf("Pick a channel from 0-3\n"); 
    int c = 0; 
    scanf("%i ", &c); 

    CHANNEL chosen = channels[c]; 

    printf ("The channel chosen is %s, n = %f, slope = %f and the depth = %f", chosen.name, chosen.n, chosen.slope, chosen.depth); 
} 

이 : 그런 다음, 사용자로부터 정보를 얻기 위해, 당신은 같은 것을해야한다. 원하는 경우 모든 채널 선택 사항을 먼저 인쇄 할 수도 있습니다.

설명을 목적으로 선택한 채널을 변수 chosen에두고 원하는대로 계속 진행할 수 있습니다.

EDIT : c이 범위 내에 있는지 확인하기위한 오류 검사가 수행되지 않습니다. 이것은 여분의 혼동스러운 코드를 표시하지 않기위한 것입니다.

+0

내가 선택한 채널의 값을 출력하는 방법은 다음과 같습니다 : – aaa

+0

printf ("선택된 채널은 % s, n = % d, 기울기 = % d 및 깊이 = % d"입니다. – aaa

+0

@AjAlmero : 답변을 업데이트했습니다. 또한'double '을 출력하는 것은'% f'로 끝납니다. – Charles

0
문제가 당신이 문자의 장소에서 문자열을 가지고있을

는 간단한 해결책에 구조체를 변경하는 것 :

typedef struct{ 
char* name; 
double n; 
double slope; 
double depth; 
} CHANNEL;