programing

루프에서 sscanf를 사용하는 방법?

elecom 2023. 9. 25. 22:14
반응형

루프에서 sscanf를 사용하는 방법?

당신과 함께 끈을 묶을 수 있는 좋은 방법이 있나요?sscanf?

예를 들어 제게 이런 형태의 문자열이 있다고 가정해 보겠습니다.

char line[] = "100 185 400 11 1000";

그리고 저는 그 합계를 인쇄하고 싶습니다.제가 정말 쓰고 싶은 것은 다음과 같습니다.

int n, sum = 0;
while (1 == sscanf(line, " %d", &n)) {
  sum += n;
  line += <number of bytes consumed by sscanf>
}

그 정보를 빼낼 방법이 없어요sscanf. 소비된 바이트 수를 반환한다면 유용할 것입니다.이런 경우에는 그냥.strtok, 하지만 여러분이 할 수 있는 것과 비슷한 것을 쓸 수 있다면 좋을 것 같습니다.stdin:

int n, sum = 0;
while (1 == scanf(" %d", &n)) {
  sum += n;
  // stdin is transparently advanced by scanf call
}

제가 잊고 있는 간단한 해결책이 있을까요?

찾아보세요.%n가족에 대한 변환 지정자.필요한 정보를 알려줍니다.

#include <stdio.h>

int main(void)
{
    char line[] = "100 185 400 11 1000";
    char *data = line;
    int offset;
    int n;
    int sum = 0;

    while (sscanf(data, " %d%n", &n, &offset) == 1)
    {
        sum += n;
        data += offset;
        printf("read: %5d; sum = %5d; offset = %5d\n", n, sum, offset);
    }

    printf("sum = %d\n", sum);
    return 0;
}

배열 이름을 증가시킬 수 없으므로 'line'을 'data'로 변경했습니다.

언급URL : https://stackoverflow.com/questions/3975236/how-to-use-sscanf-in-loops

반응형