2015-02-01 5 views
0

길이가 1D 인 배열이 52이고, 정수형 정수 값으로 구성됩니다. 대문자와 소문자 알파벳을 사용하여 배열을 출력하고 싶습니다. 예를 들어 ,C에서 출력을 포맷하는 방법은 무엇입니까?

index: A B C D E F G H I J K L M N O P Q R S T 
array: -1 -1 -1 -1 32 -1 -1 -1 -1 12 -1 -1 -1 -1 20 -1 -1 -1 -1 -1 
index: U V W X Y Z a b c d e f g h i ... x y z 
array: -1 -1 -1 -1 15 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ... -1 -1 -1 

나는 printf("%c\t\r%d\t\b", 'A', -1)for 루프했지만, \ B는 커서 위로 이동하지 않았다. 대신 나는 (위에서 보여 주었다) 원하는 형식을 생성, 나는

A 
-1 B 
-1 C 
-1 . 
. . 
. . 
. 

사람은 어떻게 형식을 생성하기 위 보였다 알고, 다음과 같이있어? 미리 감사드립니다. 여기

+0

색인 : AB ... T "'다음으로 배열 : -1 -1 ... -1"등 –

+0

원하는 형식을 인쇄 할 것이라고 생각하지 않습니다. 배열의 길이가 한 화면 길이를 초과하는 경우 인덱스 배열을 먼저 출력 한 다음 내용 배열을 출력합니다. – Steven

답변

0

, 나는 당신에게 당신이 다음은 ASCII에 따라 아주 휴대용하지 않습니다

#include<stdio.h> 
#include<conio.h> 
#include<stdlib.h> 
void main() 
{ 
    int j=96; 
    clrscr(); 
    for(int i=1;i<=52;i+=2) 
    { 
     gotoxy(i,1); 
     printf("%c",j+=1); 

     gotoxy(i,2); 
     printf("%d ",random(2)); 
    } 
    j=96; 
    for(i=1;i<=52;i+=2) 
    { 
     gotoxy(i,3); 
     printf("%c",j+=1); 

     gotoxy(i,4); 
     printf("%d ",random(2)); 
    } 

    getch(); 
} 
0

터보 C로 컴파일 된 C 언어 프로그램을 이용하여 원하는 형식의 예제를 제공하고 있습니다.

다른 배열에서 색인 표시 문자를 검색하기 만하면됩니다.

static const char index[52] = 
    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 
int A[52] = { -1, -1, -1, -1, 32, -1, -1, -1, -1, 12, -1, -1, -1, -1, 20, -1 ...}; 

int i; 
fputs("index: ", stdout); 
for (i=0; i<52; i) { 
    printf(" %c", index[i]); 
} 
fputs("\n", stdout); 

fputs("array: ", stdout); 
for (i=0; i<52; i) { 
    printf(" %2d", A[i]); 
} 
fputs("\n", stdout); 
+0

답장을 보내 주셔서 감사합니다. 그러나 코드가 원하는 양식을 인쇄하지 못합니다. 출력이 한 화면 길이를 초과하면 코드는 인덱스 배열을 먼저 출력 한 다음 배열 A를 출력합니다. 색인 배열과 배열을 동시에 인쇄 할 수 있으므로 두 배열 모두에서 새로운 줄로 바뀔 수 있습니다. 같은 시간. – Steven

+0

@ 스티브 귀하의 게시물을 수정하여 화면의 최소, 최대 및 출력 시스템 유형을 포함하여 화면 길이 요구 사항을 명확히 진술하도록 제안하십시오. 대답은 시스템에 따라 다릅니다. – chux

0

C와 C++은 단지에는 고유의 디스플레이 특성이없는 바이트의 스트림을, 참조 화면 또는 콘솔의 개념이 없습니다. 이를 수행하는 데 도움이되는 ncuses과 같은 써드 파티 API가 있습니다.

편도, cursor movement에 ANSI 이스케이프 문자열을 사용합니다. 여기서 ESC [y; xH는 커서를 행 y, col x로 이동하고 왼쪽 위 모서리는 {1,1}입니다.

당신이 시도 할 수 있습니다 창에서
printf("\033[%d;%dH", row, col); 

,

사용 SetConsoleCursorPosition. SetConsoleCursorPosition

MSDN 라이브러리의 같은 부분에 다른 기능이 많이 있습니다. 그들 중 일부는 유용 할 수도 있습니다.

그렇지 않으면 시도 할 수있는 코드 아래에 한 줄의 특정 색인으로 인쇄를 제한 할 수 있습니다.

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include <math.h> 

int main() { 

    const char charIndex[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 
    const unsigned int counter = 133; 
    const unsigned int hBuffer = 14; // max number of indexes in a line 

    unsigned int row,j; 
    unsigned int arrIndex = 0,yetToPrintcount = counter,htempBuffer; 

    // Nof of Rows needed to print the counter 
    unsigned int noOfRows = (counter/hBuffer); 
    // if no reminder means no trailing values less than hBuffer to print 
    if (counter % hBuffer == 0) noOfRows--; 

    srand(time(NULL)); // For random numbers 

    for (row = 0 ; row <= noOfRows; ++row) 
    { 

     // For printing the trailing numbers 
     // which are less than the h_buffer size 
     if (yetToPrintcount < hBuffer) 
      htempBuffer = yetToPrintcount; 
     else 
      htempBuffer = hBuffer; 

     // printing the index first 
     printf("index: "); 
     for (j = 0; j < htempBuffer; ++j){ 
      // circular printing of index 
      if(arrIndex == (sizeof(charIndex)/sizeof(char))-1) arrIndex = 0; 
      printf(" %c", charIndex[arrIndex++]); 
     } 
     printf("\n"); 

     // printing the array random values 
     printf("array: "); 
     for (j = 0; j < htempBuffer; ++j) 
      printf(" %d", rand()%10); // Prints Random numbers between 0 to 9 
     printf("\n"); 

     yetToPrintcount -= hBuffer; 
    } 

    return 0; 

} 
관련 문제