为什么这些词不附加在C?

时间:2017-07-17 02:04:30

标签: c pointers

我正在尝试编写一个函数,其中两个单词被附加到第三个字符串中,并且此函数必须使用malloc()。在我将它放入函数之前,我首先在main中编写它。我有:

int main(void){

    char *word = "Johnny";
    char *word2 = " Boy";
    char *buff = malloc(100 * sizeof(char));
    printf("%d\n", sizeof(buff));
    int ct;
    for(ct = 0; ct < strlen(word); ct++){
        buff = word;
    }
    printf("%s\n", buff);
    printf("the counter is now %d\n", ct);

    buff += ct;
    for(ct; ct < 13; ct++){
        buff = word2;
    }

   printf("%s\n", buff);    
}

我希望buff说“Johnny Boy”,但最后,“Johnny”被覆盖了,它只是说“男孩”

2 个答案:

答案 0 :(得分:1)

听着,虽然我们想要帮助,但SO并不是真正意义上的课堂环境。很明显,你在C语言中基本缺乏对指针/字符串操作的理解而苦苦挣扎,这是非常基本的材料。获得关于C的更好的书,并将此代码与您的工作进行比较,并对其进行研究,直到您了解差异以及每个步骤的具体内容为止。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void){
  char word[] = "Johnny";
  char word2[] = " Boy";
  char *temp;
  char *buff = malloc(32 * sizeof(char));
  if (buff == NULL) {
    puts("allocation error");
    return 1;
  }
  for (int ct = 0; ct <= strlen(word); ct++) {
    buff[ct] = word[ct];
  }
  printf("%s\n", buff);
  temp = buff + strlen(word);
  for (int ct = 0; ct <= strlen(word2); ct++) {
    temp[ct] = word2[ct];
  }
  printf("%s\n", buff);
  free(buff);
  return 0;
}

答案 1 :(得分:1)

好。这里的第一个问题是你必须明白字符串是数组。你不能说c数组是另一个数组。说实话,这段代码存在很多问题。我上面的代码可能会让你很难理解,所以我会尝试给你一些更容易理解的代码。还有一件事,我不会使用指针,因为我还没有掌握它们。

#define BUF 255

int main( void)
{
    char word1[BUF], word2[BUF], word_full[BUF];
    int ct, length;


    printf( "Input your first word\n" );
    scanf( " %s", &word1);

    printf( "Input your second word." );
    scanf( " %s", &word2);

    length = strlen( word1 );


    for ( ct = 0; ct < length; ct++ )
    {
        word_full[ct] = word1[ct];
        word_full[ ct + length ] = word2[ct];
    }

    word_full[BUF] = 0;

    printf( word_full );

    return 0;
}







    return 0;
}