2014-02-04 3 views
0

Я пытаюсь написать функцию, которая позволит мне использовать функцию, которую я написал, называемую strLength, для подсчета числа переданных символов, затем будет разделять номер в дополнение к терминатору NULL, а затем скопировать символы и верните копию.Функция копирования символов

до сих пор у меня есть:

int strLength(char* toCount) 
{ 
    int count = 0; 

    while(*toCount != '\0') 
    { 
     count++; 
     toCount++; 
    } 

    return count; 
} 

char* strCopy(char *s) 
{ 
    int length = strLength(s); 

    char *copy = malloc(length+1); 

    while(s != '\0') 
    { 

     s++; 
    } 

    return copy; 
} 

strCopy функция мне нужна помощь. Я также не могу использовать strcpy или memcpy, я просто пишу это самостоятельно, чтобы создать свою собственную библиотеку строк. Я думаю, что до s++ у меня должно было быть что-то вроде линий copy += s, но я не уверен, что это сработает.

Я немного новичок, поэтому, пожалуйста, медведь со мной

+0

Как вы обычно присваиваете значения переменной? И как вы получаете доступ к элементам массива, таким как копия? – tabstop

+0

Вы посмотрели функцию 'strdup'? Это делает точно то, что вы пытаетесь сделать. –

+0

Могу ли я рассматривать его как массив и просто использовать s [i] и вместо этого писать цикл for? – user3089390

ответ

1

Копирование с конца в начало выглядит как быстрый подход.
Проверьте наличие NULL.

char* strCopy(char *s) { 
    int length = strLength(s) + 1; 
    char *copy = malloc(length); 
    if (copy != NULL) { 
    while (length > 0) { 
     length--; 
     copy[length] = s[length]; 
    } 
    } 
    return copy; 
} 
0

Попробуйте это. Он работает на меня. Надеюсь, это поможет.

char* strCopy(char *s) 
    { 
     char *copy = (char*) malloc(strLength(s) + 1); 
     int index = 0; 
     while(s[index] != '\0') 
     { 
      copy[index] = s[index]; 
      index++; 
     } 
     return copy; 
    } 
Смежные вопросы