ефективен начин за копиране на низ ...

F

fahadislam2006

Guest
Здравейте всички ...
Утре пак аз съм като едно интервю ...и в последното ми интервю аз имам проблем, който беше ...Какво е ефективен начин за копиране на 4 характер низ към друг ...

Аз все още съм объркана, че за малко ...U ръководство може да WHT може да бъде ефективен начин?

един път аз се чувствам на линия подход ..., а другата е да използвате функцията strcpy (което не им е в embeded) ...

но може да има някои други по-ефективен начин???Added след 1 минути:че е спешно PLZ ...отговор soooooooonAdded след 49 минути:Аз съм тук, онлайн ...Ур чака отговор ...изцяло тъмна нощ: идея:

<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Плача или много тъжен" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />
 
По какъв език за програмиране е, че трябва да се прилага ефективно???

Какво странно Q?в интервю !!!!!!

 
Това зависи от контролер, както и от languadge.Аз не съм сигурен, че strcpy е оптимизиран инструкция.Ако имате определен 4 байт, най-бързият начин е да се използва байт байт копие 4 време.Например, ако за това са снимка:

movfw byte_1
movwf byte_1C
movfw byte_2
movwf byte_2C
movfw byte_3
movwf byte_3C
movfw byte_4
movwf byte_4C

Това е само на 8 инструкция.Ако говорим за C ...Един от начините е това, но с инструкция С, друг начин е да се обяви 32 байт номер на този адрес на проекта, ако е съставител и да забрани на този компилатор да използват някои по-бърз начин.Или можете да използвате за (), но след това си треска ще бъде голям, и скоростта ще бъде ниска, в случая с charakter 4.Ако това е за N charakter г. за () ще бъде smalles.

 
Салам,

Използване на указатели.Той е много често за струнен преработка.

Например, за да копирате низ към друг можете да използвате тази функция

Код:

нищожен strcpy (Чар * D, сивен * S) / * копие и до г * /

докато ((* D =* ите)! = '\ 0') (

г ;

S ;

)
 
Определено зависи от процесора.Някои са низ процесори CISC инструкциите, като на Intel 386 е:
CMPS / CMPSB / CMPSW / CMPSD = Сравни Струнен операнди
ИНС / Ай Ен Ес Би / INSW / INSD = Въведеното от Пристанище за Струнен
Границите на установяване / LODSB / LODSW / LODSD = Зареди String
MOVs / MOVSB / MOVSW / MOVSD = Премести Данните от низ String
Outs / OUTSB / OUTSW / OUTSD = изход Струнен до пристанище
Тел / REPE / REPZ / REPNE / REPNZ = Повторете низ операция префикс
СОКИ / SCASB / SCASW / SCASD = Сканиране String
STOS / STOSB / STOSW / STOSD = съхранява String

 
Аз използвам С ...и PIC микроконтролера

 
Аз питам: "ефективна" в какъв смисъл?
По отношение на скоростта?След това програма, с линейна структура (т.е. без верига, както предполагат Тоуев) е най-добрият.
От гледна точка на използваната памет (програма размер)?Тогава линия wuold бъде по-добре за голям размер на данни или за променлив размер.

За само с 4 символа, линейния подход би бил най-добрия както в скоростта и в програмата размер.Инициализация на цикъла и продължения тестване края състояние изразходва време и някои размери.Без вериги не са нито инициализация на тестване, но програмата размер е пропорционален на N (размера на масива).С вериги, размерът е независим от N, но имате инициализация (веднъж) и тестване (при всяко повторение на цикъла).

Ако аз бях на интервюиращия, аз се интересуваха от изпробване на това как да анализирате проблема един помисли за променливите, а не в получаването на точен отговор.

С уважение

Z

 

Welcome to EDABoard.com

Sponsor

Back
Top