내가 입력 리디렉션, ./program < file.txt
를 사용하여 텍스트 파일을 읽으려고하고, 파일이이 같은 모습했다 : 그냥 따라에, 어떤 임의의 데이터를 읽어읽기 탭 getchar가()를 사용하여 파일을 분리
Country\tSport\tGender\tMedal\n
America\tCycling\tMens\tGold\n
New Zealand\tSwimming\tWomens\tSilver\n
India\tBadminton\tMens\tbronze\n
을 첫 번째 행의 4 열로, Country
, Sport
, Gender
및 Medal
으로 향합니다.
\t
과 \n
을 삽입하여 파일을 읽기 쉽도록 만들었지 만 실제로 파일에 탭과 개행 문자가 있습니다.
내가 그 파일의 각 행을 읽으려고하고, 나는이 선언 한 문자열의 배열에 저장하고 : 같은 것을보고, 내가 문자열의 배열을 원하는
char *records[ROWS][COLUMNS];
records
을 :
{{"Country", "Sport", "Gender", "Medal"}, {"America", "Cycling", "Mens", "Gold"},
{"New Zealand", "Swimming", "Womens", "Silver"}, {"India", "Badminton", "Mens", "Bronze"}}
지금까지 난 그냥이 같은 라인, 읽기 scanf
을 사용하고 있습니다 :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ROWS 1000
#define COLS 30
#define MAX_CH 50
int
main(int argc, char *argv[]) {
char *records[ROWS][COLS];
char country[MAX_CH];
char sport[MAX_CH];
char gender[MAX_CH];
char medal[MAX_CH];
while (scanf("%s\t%s\t%s\t%s\n", country, sport, gender, medal) == 4) {
printf("%s %s %s %s\n", country, sport, gender, medal);
}
return 0;
}
을
국가 이름이 New Zealand
인 경우 두 문자열 사이에 공백이있는 것으로 인식되지 않으며 내 scanf
은 처음 네 자만 읽습니다. scanf
의 내 메서드는 4 열에서만 작동하기 때문에 효과가 없습니다.
내가 대신 getchar()
을 사용할 수있는 방법이 있습니까? 난 단지 getchar
을 사용하여 입력 스트림의 각 문자를 분석하고 탭과 개행 문자에 따라 필요한 문자를 문자열로 변환하는 방법을 모르겠습니다. getChar()
와
'fgets'을 사용하고 직접 파스를 작성하십시오. –
고마워요 @MichaelWalz,'getchar'도 사용할 수 있습니까? 나는'fgets'와 같은 것들로 넘어 가기 전에 이런 종류의 함수로 더 잘 해나 가고 있습니다. – RoadRunner
@RoadRunner, 물론, 여기에'getchar()'을 사용할 수있는 방법이 있습니다. –