나는 다음과 같은 C# 코드 스 니펫을 가지고있다.텍스트 파일을 줄 단위로 배열로 읽어 들이고 인쇄하기
string[] lines = File.ReadAllLines(@"C:\test.txt");
for(int i=0; i<lines.Length; i++)
Console.WriteLine(lines[i]);
내가 C로 변환하도록 도울 수 있는가?
고마워!
나는 다음과 같은 C# 코드 스 니펫을 가지고있다.텍스트 파일을 줄 단위로 배열로 읽어 들이고 인쇄하기
string[] lines = File.ReadAllLines(@"C:\test.txt");
for(int i=0; i<lines.Length; i++)
Console.WriteLine(lines[i]);
내가 C로 변환하도록 도울 수 있는가?
고마워!
Ansi Standard C를 사용하려는 경우 원하는 작업을 수행하려면 fopen
, fgets
및 printf
이 필요합니다.
C는 대소 문자를 구분하므로 모두 소문자 여야합니다. –
:
파일을 엽니 다 짐작 인코딩으로 입력을 읽어 (당신이 ReadAllLines는 않습니다), 대상 포맷으로 코딩 인코딩을 파악 - 이는 아마도 것 UTF16이어야하며 표준 출력으로 출력하십시오 ...
한 가지 스트림에서 다른 스트림으로 데이터를 복사하는 경우 줄 단위로 처리하는 것에 대해 걱정할 필요가 없습니다. 줄 바꿈 문자 (또는 캐리지 리턴 및/또는 캐리지 리턴/줄 바꿈 조합)을 데이터에 저장합니다.
데이터를 변경하지 않고 그대로 복사하면 선이 보존됩니다. 속도를 극대화하려면 파일을 바이너리 모드로 열고 fread/fwrite를 사용하여 한 번에 상당히 큰 청크 (예 : 4MB)를 복사하십시오.
나는 내 프로그램이 C#에서 완벽하게 작동하고 있으며, 나는 C에서 매우 익숙하다.내가하고있는 일은 3 백만 개의 파일로 구성된 ascii 파일을 얻는 것입니다. 모든 파일은 공간으로 구분 된 세 개의 부동 소수점으로 구성됩니다 ... 그리고 나는 대략 같은 크기의 다른 파일을 가지고 있습니다. 그들은 외부 및 내부 루프에서 실행되므로 총 3 백만 개 * 3 백만 개입니다. ... – asel
@asel : 그 교차 제품으로 무엇을하고 있습니까? –
당신은 C++로 간단하게 할 수 있습니다. 사용 fgets
ifstream input("test.in");
string line;
while(getline(input, line)) {
//Your code for the current line
}
실수가있는 것 같습니다. 'string line'을 선언했지만'getline (input, s)'을 호출하십시오. 아마도's == line'입니까? –
예. 나는 그것을 고쳤다. 감사. – sevity
까다로운 에지 경우 초대 :
내 블로그에 나는 example of how to do it robustly with fgets
을 게시했습니다.
정보를 위해 "line by line"을 읽지는 않습니다 - 모든 것을 한 번에 읽습니다 ...하지만 그 점 옆에 있습니다 ... –
아마 도움이 될 수있는 것을 보여 주어야합니다 . –
내 프로그램이 C#에서 완벽하게 작동하고 있고 C 언어에 익숙하지 않은가? 내가하고있는 일은 3 백만 개의 파일로 구성된 ascii 파일을 얻는 것이다. 모든 파일은 공간으로 구분 된 세 개의 부동 소수점으로 구성되어있다. 대략 동일한 크기의 다른 파일. 그들은 외부 및 내부 루프에서 실행되므로 총 3million * 3million, ... – asel