Помощ

41 views
Skip to first unread message

Светослав Алексиев

unread,
Jun 12, 2013, 1:31:23 PM6/12/13
to prog1...@googlegroups.com
Здравейте, понеже имам проблеми със листата, които трябва да пишем за понеделник, ще съм ви благодарен ако ми изясните няколко неща. Четейки учебника не ми се изясниха някои неща едно от които е функцията  strcpy. Знам че самата функция копира низове. Примерно ако имаме низа g във t. Понеже господина ще пита предпочитам някой да ми изясни как и какво точно става , ще съм много благодарен.

Александър Й.

unread,
Jun 12, 2013, 1:34:50 PM6/12/13
to prog1...@googlegroups.com
За да копираме символите трябва да използваме цикъл, защото ако просто напишем g=t ще копираме указателите, а не самите символи.

Ето ти един пример с масив:

 void strcpy(char *g, char *t)
 {
    int i;
    i=0;
    while ((g[i] = t[i]) != '\0')
    i++;
}

С указатели:

void strcpy(char *g, char *t)
{
    int i;
    i=0;
    while((*g = *t) != '\0') {
        g++;
        t++;
    }
}

Светослав Алексиев

unread,
Jun 12, 2013, 1:37:41 PM6/12/13
to prog1...@googlegroups.com
добре, ама какво точно прави '\0' ???

Александър Й.

unread,
Jun 12, 2013, 1:40:10 PM6/12/13
to prog1...@googlegroups.com
Това ти обозначава края на string-a, тоест в края на всеки string от букви имаш "\0". Ако искаш да провериш всяка буквичка от string пускаш цикъл и му казваш, че е стигнал до края, като има "\0".

Кристиян Попов

unread,
Jun 17, 2013, 10:28:27 AM6/17/13
to prog1...@googlegroups.com
 '\0' Това ти представлява така нареченият терминиращ символ. Това е просто символ , който когато се срещне , показва че няма повече байтове към този низ и четенето спира до там. Дори и във printf() ако запишеш нещо от типа: printf("%s","neshto\0sledtova"); ще се изпринтира само:  neshto
Всеки низ задължително го има!
Reply all
Reply to author
Forward
0 new messages