문자열을 입력으로 받아 C의 문자 배열에 저장

user2316393

각 문자가 별도로 유지되는 C의 배열에 문자열을 저장하는 방법에 대해 난처합니다. 예를 들어, 사용자 입력하면 hellop, 나는 주어진 배열에 저장하고 싶은 말 userText과 함께, userText[0] = h, userText[1] = e, userText[2] = l, 등. 나는 이것이 쉬운 일이라는 것을 알고 있지만 여전히 새로운 것입니다. 누구든지 도울 수 있다면 좋을 것입니다. 포인터를 사용하여이를 수행하는 방법을 설명하십시오.

#include<stdio.h>
void main()
{
    char a[10],c;
    int i=0;
    while((c=getchar())!='\n')
    {
        scanf("%c",&a[i++]);
        c=getchar();
     }
     for(i=0;i<11;i++)
         printf("%c",a[i]);
}

를 입력하면 프로그램이 일부 가비지 값 ( eoeoeoeo\363)을 출력 hellop합니다.

Nobilis

입력을 읽으려면 fgets 함수를 사용하는 것이 좋습니다 . .NET Framework의 훌륭하고 안전한 대안 scanf입니다.

먼저 다음과 같이 버퍼를 선언합시다.

char user_input[20];

그러면 다음과 같은 방식으로 명령 줄에서 사용자 입력을 얻을 수 있습니다.

fgets(user_input, 20, stdin);

이렇게하면 표준 입력 에서 문자열에 최대 20 개의 문자가 저장 되며 null로 종료됩니다 . 이전에 선언 된 배열의 크기로 입력을 제한했기 때문에 버퍼 오버런 가능성이 없습니다.

그런 다음 strlen을 사용하여 문자열에 입력 된 성가신 개행 문자를 지 웁니다 .

user_input[strlen(user_input) -1] = '\0';

As strlennull 종결 자 까지 문자열의 크기를 반환 하지만 그것 없이는 그 위치에 개행 문자 ( \n) 가 있는지 확인할 수 있습니다 . \0문자열이 거기서 끝나도록 null-terminator ( )로 대체합니다 .

마지막으로 printf를 사용하여 인쇄 해 봅시다 .

printf("The user has entered '%s'\n", user_input);

사용 fgets하고 printf다음과 같은 헤더를 선언해야합니다 :

#include <stdio.h>

들어 strlen우리는, 즉 다른 헤더를해야합니다 :

#include <string.h>

완료되었습니다.

추신 : 질문에 추가 한 코드를 알려 드릴 수 있습니다.

  1. main일반적으로 어떤 종류의 값 반환하는 int main것이 아니라 일반적으로 선언됩니다 . 작은 앱의 경우 일반적으로 닫는 중괄호 바로 앞에 배치됩니다. 이 반환은 프로그램이 성공적으로 실행되었는지 OS에 표시하는 데 사용됩니다 (0은 모든 것이 정상임을 의미하고 0이 아닌 것은 문제가 있음을 의미).void mainmainreturn 0;

  2. 문자열을 null로 종료하지 않습니다. 즉, 신중한 루프가 아닌 다른 방법으로 읽으면 문제가 발생합니다.

  3. 당신은 사용자로부터 입력을 두 번 -에 한 번 getchar다음에 scanf.

코드 사용을 고집한다면 약간 수정했습니다.

#include<stdio.h>
int main()
{
    char a[10];
    int i=0;
    while( (a[i++]=getchar()) != '\n' && i < 10) /* take input from user until it's a newline or equal to 10 */
        ;
     a[i] = '\0'; /* null-terminate the string */
     i = 0;  
     while(a[i] != '\0') /* print until we've hit \0 */
         printf("%c",a[i++]);

     return 0;
}

이제 작동합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

정수 / 문자열로 입력을 받아 배열에 저장

분류에서Dev

Java 프로그래밍, 컴파일 중 문자열에서 문자열로의 변환 오류. 사용자로부터 입력을 받아 저장

분류에서Dev

어떻게 사용자의 입력을 받아 다른 클래스에 배열로 저장합니까? || 자바

분류에서Dev

C : 입력을 받아 라이브러리없이 문자에 저장

분류에서Dev

문자열에 대해 scanf에서 적절한 입력을받을 수 없습니다 (배열의 문자로)

분류에서Dev

C 배열에 문자열 저장

분류에서Dev

사용자로부터 입력을 받아 Java의 String Array에 저장

분류에서Dev

문자열 내에 배열을 배열로 저장

분류에서Dev

C #에서 입력 매개 변수로 받아야하는 C ++의 다른 문자열로 문자열 배열 분할

분류에서Dev

C #에서 입력 매개 변수로 받아야하는 C ++의 다른 문자열로 문자열 배열 분할

분류에서Dev

파일에 숫자 문자열을 C의 배열에 별도의 정수로 저장하는 방법

분류에서Dev

C의 문자열 저장

분류에서Dev

C ++에서 배열 문자에 문자열을 저장하는 방법은 무엇입니까?

분류에서Dev

c의 입력 문자열 및 문자열을 변수에 저장하는 방법

분류에서Dev

(java)-입력 파일의 각 단어를 문자열 배열에 저장

분류에서Dev

사용자로부터 입력을 받아 switch 문에서 문자열 사용

분류에서Dev

순서대로 문자열의 문자를 대문자로 만들고 저장할 배열을 만듭니다.

분류에서Dev

TextField의 입력을 Swift의 문자열 배열에 저장하는 방법은 무엇입니까?

분류에서Dev

MVC의 문자열에 저장 프로 시저 저장

분류에서Dev

c에 문자별로 저장하는 배열을 만듭니다.

분류에서Dev

16 진수 형식의 정수 배열을 문자 "문자열"에 저장

분류에서Dev

배열에서 임의의 문자열을 가져와 문장에 삽입

분류에서Dev

아랍어 문자를 문자 배열에 저장 MATLAB

분류에서Dev

C # SQL 문자열을 SQL 저장 프로 시저로 변환

분류에서Dev

문자열 배열의 문자열을 C의 변수에 저장하는 방법

분류에서Dev

8 개의 입력 문자열 문자를 저장하는 1 바이트 문자 배열

분류에서Dev

문자열 배열 속성을 문자열로 변환하여 SQL Server에 쉼표로 구분 된 행 Mongo DB로 SQL Server C #으로 저장하는 방법

분류에서Dev

c 프로그래밍 저장소 문자열을 char 배열로

분류에서Dev

사용자 입력의 변수에 MySQL 연결 문자열 저장 후 문자열 작성 [C #]

Related 관련 기사

  1. 1

    정수 / 문자열로 입력을 받아 배열에 저장

  2. 2

    Java 프로그래밍, 컴파일 중 문자열에서 문자열로의 변환 오류. 사용자로부터 입력을 받아 저장

  3. 3

    어떻게 사용자의 입력을 받아 다른 클래스에 배열로 저장합니까? || 자바

  4. 4

    C : 입력을 받아 라이브러리없이 문자에 저장

  5. 5

    문자열에 대해 scanf에서 적절한 입력을받을 수 없습니다 (배열의 문자로)

  6. 6

    C 배열에 문자열 저장

  7. 7

    사용자로부터 입력을 받아 Java의 String Array에 저장

  8. 8

    문자열 내에 배열을 배열로 저장

  9. 9

    C #에서 입력 매개 변수로 받아야하는 C ++의 다른 문자열로 문자열 배열 분할

  10. 10

    C #에서 입력 매개 변수로 받아야하는 C ++의 다른 문자열로 문자열 배열 분할

  11. 11

    파일에 숫자 문자열을 C의 배열에 별도의 정수로 저장하는 방법

  12. 12

    C의 문자열 저장

  13. 13

    C ++에서 배열 문자에 문자열을 저장하는 방법은 무엇입니까?

  14. 14

    c의 입력 문자열 및 문자열을 변수에 저장하는 방법

  15. 15

    (java)-입력 파일의 각 단어를 문자열 배열에 저장

  16. 16

    사용자로부터 입력을 받아 switch 문에서 문자열 사용

  17. 17

    순서대로 문자열의 문자를 대문자로 만들고 저장할 배열을 만듭니다.

  18. 18

    TextField의 입력을 Swift의 문자열 배열에 저장하는 방법은 무엇입니까?

  19. 19

    MVC의 문자열에 저장 프로 시저 저장

  20. 20

    c에 문자별로 저장하는 배열을 만듭니다.

  21. 21

    16 진수 형식의 정수 배열을 문자 "문자열"에 저장

  22. 22

    배열에서 임의의 문자열을 가져와 문장에 삽입

  23. 23

    아랍어 문자를 문자 배열에 저장 MATLAB

  24. 24

    C # SQL 문자열을 SQL 저장 프로 시저로 변환

  25. 25

    문자열 배열의 문자열을 C의 변수에 저장하는 방법

  26. 26

    8 개의 입력 문자열 문자를 저장하는 1 바이트 문자 배열

  27. 27

    문자열 배열 속성을 문자열로 변환하여 SQL Server에 쉼표로 구분 된 행 Mongo DB로 SQL Server C #으로 저장하는 방법

  28. 28

    c 프로그래밍 저장소 문자열을 char 배열로

  29. 29

    사용자 입력의 변수에 MySQL 연결 문자열 저장 후 문자열 작성 [C #]

뜨겁다태그

보관