В программе, которую я пишу, мне нужно иметь возможность разбить входной текстовый файл на слова, выполнить некоторую кодировку и затем записать в выходной файл.Проблема в том, что мне нужно сохранить новые строки.
Подход, который я пробовал, состоит в том, чтобы strtok сохранял символы новой строки в конце слова, однако, strtok будет включать только один символ новой строки, прежде чем двигаться дальше.Если есть следующая новая строка, она становится ее собственным токеном.Как я могу изменить это поведение, чтобы токены включали все новые строки перед переходом к следующему слову?
int changeNewLine(char* p) {
p = p + (strlen(p)-1);
int newlines = 0;
while(*p == '\n') {
*p = '\0';
newlines++;
p--;
}
return newlines;
}
void main(int argc, char *argv[]) {
FILE *inputfile = fopen(argv[1],"rw");
FILE *outputfile = fopen("output.txt","wb");
char buffer[128];
char *token;
char words[MAX_CODE][WORDLEN];
int i = 0;
unsigned short newlines[MAX_CODE];
while(fgets(buffer, 128, inputfile)){
token = strtok(buffer," ");
while(token != NULL) {
newlines[i] = changeNewLine(token);
strcpy(words[i], token);
i++;
token = strtok(NULL," ");
}
}
...
}
Выше приведен фрагмент моего кода.Идея состоит в том, чтобы подсчитать количество новых строк в токене, а затем выписать их обратно.