Я пишу программу, которая будет принимать каждые 3 числа в файле и преобразовывать их в их символы ASCII. Поэтому я подумал, что могу прочитать числа в массив символов, а затем сделать каждые 3 элемента 1 элементом во втором массиве, преобразовать их в int и затем распечатать их как char.
Однако я застрял на каждых 3 элементах. Это мой фрагмент кода для этой части:
char arry[] = "073102109109112"; <--example string read from a file
char arryNew[16] = {0};
for(int i = 0; i <= sizeof(arryNew); i++){
strncpy(arryNew, arry, 3);
arryNew[i+3]='\0';
puts(arryNew);
}
Этот код дает мне первые 3 числа, пятнадцать раз. Я попытался увеличить i на 3, что дает мне первые 3 числа 5 раз. Как написать цикл for с помощью strncpy, чтобы после копирования n символов он переходил к следующим n символам?
strncpy(arryNew, arry+i*3, 3);
? и удалитьarryNew[i+3]='\0';
- person VladimirM   schedule 22.11.2013i <= sizeof(arryNew)
. Увидеть<=
в циклеfor
почти всегда плохо. В этом случае вы разрешитеi==16
, поэтому вы будете адресовать элементы доarryNew[19]
, когда последним, к которому вы можете обратиться, будетarrayNew[15]
. Вам нужно освежить в памяти размеры массивов.< (16 - 3)
будет работать лучше. На самом деле места, где вы копируете в и из, тоже перепутались. - person Floris   schedule 23.11.2013