Почему строковую переменную нельзя присвоить другой строковой переменной в C? - PullRequest
0 голосов
/ 23 февраля 2012

Почему в приведенном ниже коде мы не можем присвоить strA для strB и в качестве указателя pA содержит адрес указателя pB, тогда адрес должен был быть скопирован при присвоении pA для pB и strB должен содержать значение, равное strB.

#include <stdio.h>
char strA[80] = "A string to be used for demonstration purposes";
char strB[80];
int main(void)
{
    char *pA; /* a pointer to type character */
    char *pB; /* another pointer to type character */
    puts(strA); /* show string A */
    pA = strA; /* point pA at string A */
    puts(pA); /* show what pA is pointing to */
    pB = strB; /* point pB at string B */
    putchar('\n'); /* move down one line on the screen */
    pB=pA;
    strB=strA;
    puts(strB); /* show strB on screen */
    puts(strA);

    return 0;
}

Ответы [ 2 ]

4 голосов
/ 23 февраля 2012

Вы не можете назначать массивы в C (strB=strA).Вы должны использовать strcpy или memcpy для переноса содержимого одного массива / указателя в массив.

2 голосов
/ 23 февраля 2012

Когда вы пишете:

char strB [80];

strB - не указатель, а постоянный указатель.Это означает, что вы не можете изменить адрес, указанный strB, и, таким образом,

strB = strA;

ничего не сделает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...