moyen efficace de copier une chaîne ...

F

fahadislam2006

Guest
Salut à tous ...
Demain encore, je vais avoir un entretien ...et dans ma dernière entrevue j'ai eu un problème qui a été ...Qu'est-ce que moyen efficace de copier une chaîne de caractères 4 à une autre ...

Je suis encore confus à ce sujet un peu ...can u guide RAS pourrait être le moyen efficace?

d'une façon que je ressens est de l'approche en boucle ...et une autre est d'utiliser la fonction strcpy (qui n'est pas leur en embarqués) ...

mais peut-il y avoir plus efficace autrement???Ajouté après 1 minutes:il est urgent plz ...soooooooon réponseAjouté après 49 minutes:Je suis ici en ligne ...attente pour ur réponse ...dans la nuit sombre tout: idea:

<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Pleure ou très triste" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />
 
Dans ce langage de programmation est censé être mis en œuvre efficacement???

Quelle étrange Q?dans une interview !!!!!!

 
C'est dépendent du contrôleur, et de la languadge.Je ne suis pas sûr que ce soit strcpy une instruction optimisée.Si vous avez un fixe de 4 octets, le moyen le plus rapide est d'utiliser un octet pour octet exemplaire 4 temps.par exemple si ce pic SA:

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

Il s'agit d'une instruction à seulement 8.Si vous parlez de C ...une façon est-ce, mais avec des instructions C, une autre façon est de déclarer 32 Numéro octets de cette adresse de départ, si compilateur interdit cela et laissez-compilateur d'utiliser un moyen rapide.Ou vous pouvez utiliser un for (), mais alors votre cabillaud sera grande, et la vitesse sera faible, dans le cas d'un charakter 4.Si ce n'est pour charakter n, le for () sera smalles.

 
Salam,

Utilisez les pointeurs.Il est très courant pour le traitement de chaîne.

Par exemple, pour copie de chaîne à l'autre, vous pouvez utiliser cette fonction

Code:

strcpy vide (char * d, char * s) copie * / s à d * /

while ((* d =* s)! = '\ 0') (

d ;

s ;

)
 
Certainement dépend du processeur.Certains processeurs CISC ont instructions de chaîne, comme Intel 386 a:
CMPS / CMPSB / CMPSW / CMPSD = Comparer les opérandes de chaînes
INS / INSB / INSW / INSD = Entrée du Port à cordes
LODS / lodsb / LODSW / String = charge LODSD
MOV / MOVSB / MOVSW / MOVSD = déplacer des données d'une corde à
SORTIES / OUTSB / OUTSW / = chaîne de sortie OUTSD à Port
REP / REPE / REPZ / REPNE / REPNZ = Opération string prefix Répéter
SCAS / SCASB / SCASW / SCASD = Scan String
STOS / stosb / STOSW / String = Store STOSD

 
Je voudrais demander: "efficace" dans quel sens?
En termes de vitesse?Ensuite, un programme avec une structure linéaire (c'est à dire sans une boucle, comme suggèrent Tohu) est le meilleur.
En terme d'utilisation mémoire (la taille du programme)?Ensuite, une boucle révèleraient être le meilleur pour la grande taille de données ou de la taille variable.

Pour seulement 4 caractères, l'approche linéaire serait le meilleur tant en vitesse et en taille du programme.L'initialisation de la boucle et l'OT tester la condition de fin consomme du temps et une certaine taille.Sans boucles vous n'avez pas d'initialisation, ni essai, mais la taille du programme est proportionnelle à N (la taille du tableau).Avec des boucles, la taille est indépendant de N, mais vous avez l'initialisation (une fois) et les tests (à chaque itération de la boucle).

Si je devais l'interviewer, je m'intéressais à tester la façon dont vous analyser le problème, une considérer les variables, pas à obtenir une réponse précise.

Cordialement

Z

 

Welcome to EDABoard.com

Sponsor

Back
Top