C:将字符串中的每个字母加倍

时间:2017-11-26 17:27:29

标签: c

我现在正在学习C,我仍然坚持这个问题。

Input: 'abc'
Output: 'aabbcc'

我坚持使用指针并增加大小缓冲区。见下文

编辑:添加了主()

#include <stdio.h>
#include <string.h>
int main()
{
   char destValue[];
   char srcValue[];    

   //User input
   printf("Please enter valid text: " );
   scanf("%s", srcValue);

   //Copying to memory
   memcpy(destValue, srcValue, strlen(srcValue)+1);
   char lenghtOfText = strlen(srcValue); 

   for(int i = 0; i < lenghtOfText; i++) {
      tempValue[i] = strcat(tempValue, srcValue);
   }
}

每次运行我的代码时,它都会一直失败并且错误消息是Abort 6.在搜索时,他们说tempValue不会增加缓冲区的大小。

很抱歉,如果我的代码无效,我只是在学习C编程。感谢您的理解

3 个答案:

答案 0 :(得分:2)

只需你可以这样做

   #include<stdio.h>
#include<malloc.h>
#define len 10
int main()
{
        char *destValue;
        char *srcValue;

        srcValue = malloc(len * sizeof(char));
        destValue = malloc((2 * len * sizeof(char)) + 1);
        //User input
        printf("Please enter valid text: " );
        scanf("%s", srcValue);
        int j = 0;
        for(int i = 0  ;srcValue[i]!= '\0';i++) {
                destValue[j++]= srcValue[i];
                destValue[j++]= srcValue[i];
        }

        destValue[j]='\0';
        puts(destValue);

        free(destValue);
        free(srcValue);

        return 0;
}

我希望你能得到这个。

答案 1 :(得分:1)

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


int main(int argc, char const *argv[]) {
  char* srcValue = "Hello World";
  char* output = calloc(strlen(srcValue)*2+1, sizeof(char));
  for (int i=0; i<strlen(srcValue); i++){
    output[2*i] = srcValue[i];
    output[2*i+1] = srcValue[i];
  }
  output[2*strlen(srcValue)] = '\0';
  printf("%s\n", output);
  return 0;
}

答案 2 :(得分:0)

destValue和srcValue本质上是指向char数组的指针。但是你没有为他们分配任何记忆。 scanf函数将尝试将输入的文本复制到初始化的内存位置。