Я думал бы, что "ROWTERMINATOR = '\n'" будет работать. Я предложил бы открыть файл в инструменте, который показывает "скрытые символы", чтобы удостовериться, что строка завершается как Вы, думают. Я использую блокнот ++ для вещей как это.
В C строка идентифицируется указателем, например char * str
, или, возможно, массивом. В любом случае, мы можем объявить наш собственный указатель, который будет указывать на начало строки:
char *c = str;
Затем мы можем заставить наш указатель проходить мимо любых символов, похожих на пробелы:
while (isspace(*c))
++c;
Это переместит указатель вперед, пока он не перестанет указывать до пробела, то есть после любых начальных пробелов или табуляции. Это оставляет исходную строку без изменений - мы только что изменили местоположение, на которое указывает наш указатель c
.
Вам понадобится это включение, чтобы получить isspace
:
#include <ctype.h>
Или если вы счастливы определить свое собственное представление о том, что такое пробельный символ, вы можете просто написать выражение:
while ((*c == ' ') || (*c == '\t'))
++c;
void trim(const char* src, char* buff, const unsigned int sizeBuff)
{
if(sizeBuff < 1)
return;
const char* current = src;
unsigned int i = 0;
while(current != '\0' && i < sizeBuff-1)
{
if(*current != ' ' && *current != '\t')
buff[i++] = *current;
++current;
}
buff[i] = '\0';
}
Вам просто нужно дать баффу достаточно места.