2016-09-21 7 views
-4

"char 데이터 형식 값"을 배열에 저장하려고하지만 작동하지 않습니다.배열에 "char values"를 저장하려고합니다 (C 언어로)

먼저 "gets"를 사용하려고 시도했습니다. 하지만 런타임 오류가 발생했습니다. 코드는 하나의 내가 "는 scanf"를 사용했다,하지만 난 저장할 수 없습니다 "문자 데이터 유형은 (는 문자열과 같은 둘 이상의 문자이어야 함)", 두 번째 방법이

int tmp = 0; 


    char arr[100] = { 0, }; 
    while (arr[tmp]!=NULL) 
    { 
     gets(arr[tmp]); 
     tmp++; 
    } 
    for (int rtmp = 0; rtmp < a; rtmp++) 
    printf("%s ", arr[rtmp]); 
    return 0; 

같았지만, 문자를 사용할 수 없습니다 (% s을 시도했지만 작동하지 않습니다) 게다가 배열의 마지막 값을 인쇄하지 않습니다.

int a = 0; 
scanf("%d", &a); //determine how much I input values 

int tmp = 0; 
char arr[100] ={ 0 , }; 
for(tmp=0;tmp<a;tmp++) 
{ 
    scanf("%c ",arr[tmp]); 
    fflush(stdin); 
} 
for (int rtmp = 0; rtmp < a; rtmp++) 
    printf("%c ", arr[rtmp]); 
return 0; 

내게 가장 "동일한"은 "A"값이 및 배열 "char 값을"기억 ..

어떻게 ("a"는 얼마의 값 I 입력 수단)에 알리지 않고 인 이 문제가 해결 되었습니까? 미리 감사드립니다. 당신의 도움은 항상 감사합니다 :)

+5

'는 scanf ("%의 C", 편곡 [TMP]);'->'는 scanf ("%의 C", 편곡 [TMP]);' – BLUEPIXY

+1

을 첫 번째 경우에, 당신을 'char'의 배열을 가지고 있지만,'char' 배열 (포인터)로 * 요소 *를 처리하려고합니다. –

+2

'fflush (stdin); '은 정의되지 않은 동작을 호출합니다. 입력 스트림을 플러시 할 수 없습니다. – Olaf

답변

1

문자 데이터 형식의 배열은 스팅이라고합니다. scanf() 및 gets()를 사용하여 문자열 입력을 가져올 수 있습니다. 그러나 scanf()를 사용하면 Space-bar 또는 Enter를 눌러 문자열을 입력하게됩니다. 그러나 gets()를 사용하면 Enter 키만 누르면 입력이됩니다.

예 1 :

char s[100]; 
scanf("%s", s); 

예 2 : 당신은 모든 단일 문자를 개별적으로 입력하려면

char s[100]; 
gets(s); 

이제, 당신은 또한 수행 할 수 있습니다

char s[100], c; 
    int n, i, j; 
    scanf("%d", &n); 
    getchar(); 
    for(i=0; i<n; i++) { 
     scanf("%c", &s[i]); 
    } 

    s[i] = '\0'; 

지금 이봐 요,이후에 getchar()을 작성했습니다. 왜냐하면 inpu 다음에 Enter 키를 누르면 n에 이어 새로운 문자 ('\ n')도 입력으로 사용됩니다. 이렇게하면 반드시 그렇게해야합니다.

더 많은 것은 scanf()을 사용하여 공백이 포함 된 문자열을 입력 할 수 있습니다. 그냥 이렇게 :

char s[100]; 
scanf("%[^\n]", s); 
관련 문제