programing

scanf를 사용하여 공백으로 구분된 숫자를 읽는 방법

muds 2023. 9. 23. 23:11
반응형

scanf를 사용하여 공백으로 구분된 숫자를 읽는 방법

를 사용하여 공백으로 구분된 숫자(정수 유형)를 읽고 싶습니다.scanf()기능.다음 내용을 읽었습니다.

별로 도움이 되지 않습니다.

공백을 구분 기호로 사용하여 숫자를 읽으려면 어떻게 해야 합니까?예를 들어.다음 번호를 입력합니다.2 5 7 4 3 8 18이제 저는 이것들을 다양한 변수에 저장하고 싶습니다.제발 도와주세요.

기본적으로 스캔프에서 공백/입력으로 읽은 값이라고 생각합니다.정수를 인쇄하는 경우 '%d' 사이의 공백을 제공할 수 있습니다.다른 경우에도 마찬가지입니다.

scanf("%d %d %d", &var1, &var2, &var3);

마찬가지로 쉼표로 구분된 값을 읽으려면 다음을 사용합니다.

scanf("%d,%d,%d", &var1, &var2, &var3);

scanf공백을 구분 기호로 사용하므로 다음과 같이 말하면 됩니다.scanf("%d", &var)공백을 건너뛰고 정수(비자리까지 digits)를 읽습니다. 그 이상은 없습니다.

공백은 공백, 탭, 줄 바꿈 또는 캐리지 리턴과 같은 임의의 공백입니다.공백 중 하나 이상은 연속 정수를 구분하는 역할을 합니다.

int main()
{
char string[200];
int g,a,i,G[20],A[20],met;

gets(string);
g=convert_input(G,string);

for(i=0;i<=g;i++)
    printf("\n%d>>%d",i,G[i]);
return 0;
}

int convert_input(int K[],char string[200])
{
int j=0,i=0,temp=0;
while(string[i]!='\0')
{
    temp=0;
    while(string[i]!=' ' && string[i]!='\0')
        temp=temp*10 + (string[i++]-'0') ;
    if(string[i]==' ')
        i++;
    K[j++]=temp;
}
return j-1;
}

수신 변수 목록을 사용하는 것처럼 간단해야 합니다.

scanf("%i %i %i", &var1, &var2, &var3);

이 솔루션을 사용하면 양과 음의 정수를 읽을 수 있습니다.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define BUFFER_SIZE 50


int convert_input (int * v, char * buffer) {
    int len = 0, i = 0, temp = 0, positive_or_negative_one = 1;
    while(buffer[i]!='\0') {
        temp = 0;

        if (buffer[i] == '-'){
            positive_or_negative_one = -1;
            i++;
        } else {
            while(buffer[i] != ' ' && buffer[i] != '\0')
                temp = temp*10 + (buffer[i++]-'0');

            if(buffer[i]==' ')
                i++;
            v[len++] = temp * positive_or_negative_one;
            positive_or_negative_one = 1;
        }
    }
    return len;
}

int main(int argc, char const *argv[]) {
    int *a = NULL;
    int count_a, len=0;
    char buffer[BUFFER_SIZE];

    printf("Input numbers here: ");
    gets(buffer);
    for (int i = 0; i < strlen(buffer); i++) {
        if (buffer[i] == ' '){
            len+=1;
        }
    }

    a = (int*) malloc(sizeof(int) * len + 1);
    count_a = convert_input(a, buffer);

    for (int i = 0; i < count_a; i++) {
        printf("%d\n", a[i]);
    }

    free(a);

    return 0;
}

입력 및 출력 예제:

Input numbers here: 1 2 3 -4 10
1
2
3
-4
10

언급URL : https://stackoverflow.com/questions/10425953/how-to-read-numbers-separated-by-space-using-scanf

반응형