2014-03-13 4 views
3

저는 c programming을 처음 사용합니다. 내가 입력 한 문자위한 프로그램을 작성하고 마지막으로 입력 한 문자를 표시 ..하지만 항상에만 마지막 문자를 표시했다 .. 나는 그것의 간단한 질문을 알고 있지만 초보자 그래서 사람을 도와주세요입니다 .. .. 도와주세요c로 입력 한 문자를 표시하는 방법은 무엇입니까?

#include<stdio.h>  
    int main() 
    { 
     char z; 
     int a; 
      printf("enter the no."); 
      scanf("%d",&a); 
      printf("the entered no. is:%d\n",a); 
      int i; 
      for(i=0;i<a;i++) 
      { 
       printf("enter the letters:"); 
       scanf("%s",&z); 
      } 
      printf("the entered letters are:"); 
      for(i=0;i<a;i++) 
      { 
       printf("%s\n",&z); 
      } 
      return 0; 

    } 
+0

감사합니다의 aishwarya의 KARTHIK를 대답을 얻었다! –

답변

2

문제 :

  1. 당신은 %c (문자)를 사용한다 대신 (문자열) %s.

  2. 여러 문자를 저장하기 위해 문자 배열을 사용하십시오. 배열 here에 대해 읽어보십시오.

  3. printf()에서 두 번째 for 루프까지 &을 제거하십시오.

이 시도 :

int main() 
{ 
    char z[10]; //can hold 10 characters like z[0],z[1],z[2],.. 
    int a; 
    printf("enter the no."); 
    scanf("%d",&a); 
    printf("the entered no. is:%d\n",a); 
    int i; 
    for(i=0;i<a;i++) 
    { 
     printf("enter the letters:"); 
     scanf("%c",&z[i]); 
    } 
    printf("the entered letters are:"); 
    for(i=0;i<a;i++) 
    { 
     printf("%c\n",z[i]); 
    } 
    return 0; 
} 
+0

감사합니다.하지만 입력 한 글자 만 인쇄하려고합니다 .. –

+0

과 같은 모든 문자가 표시됩니다. 어레이는 최대 10 자까지만 저장할 수 있습니다. 그 이상을 원하면 배열 크기를 변경하십시오. '삼각형처럼 모든 글자를 표시 했어? ' 나는 그것을 얻지 못했다. –

+0

만약 내가 bc와 같은 글자를 입력했다면, 출력은 abcdefghi와 같습니다. abcdefgh abcdefg abcdef abcde와 마찬가지로, 줄 단위로. –

2

문자는 %c을 사용하여 스캔됩니다. 당신이 뭘 하려는지 char z[10];

이 방법을 수행 할 수 있습니다 : 그리고 여러 문자를 스캔하면 char 배열을 사용할 수 있습니다

 char z[10]; // Take some max size array 
     ... 
     for(i=0;i<a;i++) 
     { 
      printf("enter the letters:"); 
      scanf("%c",&z[i]); // Scan the letters on each array position. 
     } 
     printf("the entered letters are:"); 
     for(i=0;i<a;i++) 
     { 
      printf("%c\n",z[i]); //'printf' doesn't require address of arg as argument hence no `&` required 
     } 

%s 인수는 chars의 문자열을 검색하는 데 사용됩니다.

참고 chars문자열배열 chars의 차이. C의 chars 문자열은 \0으로 끝나는 ASCII 문자 0으로 끝나야합니다. char 배열은 \0으로 끝나지 않아도되는 문자 모음 일 뿐이며 char 형식의 문자는 \0입니다. , strcpy, strlen 등과 같은 문자열에 대해 일부 연산을 수행하려고 할 때 차이가 더 중요해진다.이 함수는 문자열의 널 문자 종료 속성에서 작동합니다.

예 : strlen은 문자열 길이를 알아 내기 위해 \0을 찾을 때까지 문자열의 문자를 계산합니다. 마찬가지로 printf\0 문자를 찾을 때까지 문자 단위로 문자열을 인쇄합니다.

업데이트 :

scanf 입력 char 형식으로 좋은 옵션이 아니라는 것을 언급하는 것을 잊었다. fgetc 대신 stdin을 입력 FILE 스트림으로 사용하십시오.

+0

내 코드 브로그를 편집 해 주시기 바랍니다. 모든 해결책을 –

+0

내 대답을 업데이트했습니다. –

1
#include <stdio.h>  

int main() 
{ 
    char *z; 
    int a; 
    printf("enter the no."); 
    scanf("%d",&a); 
    z = (char *) malloc(a); 
    printf("the entered no. is:%d\n",a); 
    int i; 
    for(i=0;i<a;i++) 
    { 
     printf("enter the letters:"); 
     scanf("%c",z+i); 
    } 
    printf("the entered letters are:"); 
    for(i=0;i<a;i++) 
    { 
     printf("%c\n",z); 
    } 
    return 0; 
} 
+0

내 코드를 편집 해주세요. 모든 해결책을 찾지 못했습니다. –

2

char z은 하나 개의 문자에 대한 자리 표시 자입니다. 그리고 당신은 zfor 루프 안에 쓰는 것을 끝내고 있습니다.더 많은 문자를 사용하려면 다른 사람이 언급 한대로 char array을 사용하십시오. 같은 당신 루프에서

또는 인쇄 문자는 당신이 그들을 스캔 :

#include<stdio.h>  
int main() 
{ 
    char z; 
    int a; 
    printf("enter the no."); 
    scanf("%d",&a); 
    printf("the entered no. is:%d\n",a); 
    int i; 
    for(i=0;i<a;i++) 
    { 
     printf("enter the letters:"); 
     scanf("%s",&z); 
     printf("letter scanned:%c\n", z); 
    } 
    return 0; 
} 
+0

나는 어떤 해결책도하지 않을 때까지 나의 부호 형제를 편집하십시오 –

+0

@ R.A : 나는 나의 부호를 편집하고, 당신의 편집자에게 베껴두고 풀고 그것을 시도한다. – brokenfoot

+0

친구 맞지 .. 내가 무엇을 원하는지 분명히 설명 할 것이다 .. 만약 내가 4를 입력으로 4를 입력하고 4를 입력하면 4 글자를 입력하라. 네 글자를 입력하면 .. 새로운 라인으로 표시됩니다 ..하지만 귀하의 코드는 내가 GV 경우, 그것은 한 번에 보여줍니다 ..하지만 난 그 친구처럼되고 싶지 않아 .. 내 말을 이해할 수 있습니까? –

2

는 scanf와에 대한 자세한 내용은 this로 봐주세요. scanf("%s",&z);%s은 문자열 읽기 (줄 바꿈 문자를 제외한 문자 배열이며 null char로 끝남)입니다. 그래서이 내부 루프를 넣으면 원하는 결과를 얻지 못할 것입니다. 그리고 한 번에 한 글자 만 읽으려면 문자 용으로 여기에 %c을 사용하십시오.

for(i=0;i<a;i++) 
{ 
      printf("enter the letters:"); 
      scanf("%c",z+i); 
} 
1
코드에서

첫 번째 오류 당신은 "% S"대신 "%의 C".Second이다 변수 사용 arrays.third을 사용 그래서 대신에 하나 개의 변수에 여러 값을 저장하는 것은 불가능하다의 사용하고있다 당신은 당신이 모르는 글자 수를 입력하라고 사용자에게 말했고, 또한 1을 입력 할 수도 있고 100000을 입력 할 수도 있습니다. 그래서 배열의 멤버 수가 정의되지 않습니다. 특정 숫자를 사용하는 것이 더 낫습니다. 배열의 문자 수

0

드디어 내가 ... 단순히이 바위 도움말 유래들에 감사드립니다

#include<stdio.h> 
#include<malloc.h> 
int main() 
{ 
     int a; 
     char *z=(char *)malloc(sizeof(a)); 
     printf("enter the no."); 
     scanf("%d",&a); 
     printf("the entered no. is:%d\n",a); 
     int i; 
     for(i=0;i<a;i++) 
     { 
      printf("enter the letters:"); 
      scanf("%s",&z[i]); 
     } 
     printf("the entered letters are:\n"); 
     for(i=0;i<a;i++) 
     {     
      printf("%c\n",z[i]); 
     } 
     return 0; 

} 
관련 문제