народ есть массив чар , в нем записанные данные: 4357753441 3425335345 4357753441 3425335345 4357753441 3425335345 а как мне сделать что бы все эти данные были в 1 строку ... Хелп... ( делал по разному может с вас кто то посоветует что то )
Code: int j= 0; for (int i=0; i<sizeof(szData); i++) { if (szData[i]!='\n') { data[j]=szData[i]; ++j; } }
Это разве не двумерный массив? Ты в цикле проверяешь каждый элемент этого массива (строка) на признак переноса. Естественно не будет работать. надо посимвольно.
Ясно, тогда по идее это должно работать.. Code: char szData[] = "4357753441\n3425335345\n4357753441\n3425335345\n4357753441\n3425335345"; int i =0; while( szData[i] != '\0') { if(szData[i] != '\n') std::cout << szData[i]; ++i; }
Code: char szData[] = "4357753441\n3425335345\n4357753441\n3425335345\n4357753441\n3425335345"; std::remove(szData, szData + sizeof(szData), '\n');
1) выделяешь буфер равный длине исходной строки 2) едешь циклом по исходной побайтово переписывая в выделенный буфер 3) если встречается \r\n (бинарно) или \n (текстово) то выполняешь continue 4) и фапаешь так пока не встретишь большой 0 еба, да вам без RTL никуда
2 ЕгоАкк, двигать массив ? есть массив у тебя 1000 элементов на 5 элементе попадается перенос... тебе надо сдвинуть 995 элементов... начинаем снова с 5... на 6 попадается перенос - двигать 994 элемента, сам не понял, что это бредово? Для криворуких, алгоритм описанный sn0w Code: char buf[512], buf2[512]; char *p=buf; char *k=buf2; while(*p++!=0) if(*p!=0x0A && *p!=0x0D) *k++=*p; ^ не знаю, как насчет быстродействия, но выглядит круто в простом написании Code: int i,j; j=0; for(i=0;i<sizeof(buf);i++) { if(buf[i]=='\r' || buf[i]=='\n') continue; buf2[j++]=buf[i]; } 2 ShyRka_coder, если у тебя что-то не работает - это не повод писать на форум, а повод научиться пользоваться отладчиком (в случае с компилируемыми языками) или писать проверочные условия и выводы значений (в случае со скриптовыми языками).
Ну выделил ты второй массив, выделение памяти операция не быстрая, а еще и проверить нужно выделилась ли память. И там и там нужно бежать по массиву, только в моём случае логика пробега чуть сложнее. Моя функция может обработать строку размером со всю память, твоя только в половину памяти. В результате я напишу "(void) remn(str)", а ты напишешь "if ((newstr = remn(oldstr)) == NULL)" и будешь обрабатывать ошибку выделения памяти. Если у тебя malloc в обертке, которая вызывает exit(1) в случае фейла, то твоя программа становится менее живучей.