2016-08-19 3 views
0

C에서 파일 작업에 약간의 어려움이 있습니다. 이미 C로 파일을 읽고 쓰는 방법을 알고 있지만 읽을 수는 있고 추가 만 할 수 있습니다. 문자열의 행을 읽고 숫자로 변환 (int)하면 어떻게할까요? 예를 들어텍스트 파일에서 숫자로 문자열 변환

는 :

12345 30 15 
2111 9 20 
    321 17 7 

지금은 각 라인에 대해, 나는 가격 변수 및 수량으로 다음 번호와 같은 첫 번째 번호를 사용하려면 :

mytextfile.txt는 이러한 데이터를 포함 마지막 숫자는 할인입니다. 내 문제는 정수 (또는 문자열)로 사용할 수 있도록 세 숫자를 변수에 저장하는 방법입니다.

readitem 기능은 다음 레코드를 얻을 것

+3

[은'fscanf' 기능 (http://en.cppreference.com/w/c/io/fscanf) 작동하지 않습니다 : 당신은 모든 항목을 얻기 위해 루프에서 함수를 호출 할 수 있습니다 너를 위해서? 그 외에 또 무슨 짓을 한거야? [좋은 질문을하는 방법에 대해 읽어보십시오.] (http://stackoverflow.com/help/how-to-ask), [최소, 완전하며 검증 가능한 예제] (http : // stackoverflow. co.kr/help/mcve). –

+0

또한 분리 문자를 분할하려면 strtok을 살펴보십시오. –

+1

줄 단위로 읽은 다음'sscanf (linebuf, "% d % d % d", & price, & quantity, & discount);를 사용하여 숫자를 얻습니다. –

답변

0
#define MAXLINE 80 

typedef struct { 
    double cost, qty, disc; 
} item; 

int readitem(FILE *fp, item *itm) 
{ 
    char buf[MAXLINE]; 

    if (fgets(buf, MAXLINE, fp) == NULL) 
     return 0; 

    return sscanf(buf, "%lf%lf%lf", &itm->cost, &itm->qty, &itm->disc); 
} 

내 출력 가격, 수량 및 할인에 따라 계산 된 금액이 아래 줄에 하나 개의 값 (결과)에 나열되어 있어야합니다 ... 그리고 포인터를 itm 포인터로 읽어보십시오.

#define MAXITEMS 255 

item arr[MAXITEMS]; 
size_t i; 
FILE *fin; 

for (i = 0; i < MAXITEMS && readitem(fin, arr + i); ++i) 
    ; 
+0

고마워요 ... C 프로그래밍에 관해서 배울 점이 많습니다 ... 어렵고 어렵습니다. – Kimba

관련 문제