我正在尝试编写一个函数,其中两个单词被附加到第三个字符串中,并且此函数必须使用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”被覆盖了,它只是说“男孩”
答案 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;
}