首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在c++中从3个用户输入字符串中生成一个字符串

如何在c++中从3个用户输入字符串中生成一个字符串
EN

Stack Overflow用户
提问于 2018-12-13 08:20:26
回答 2查看 229关注 0票数 0

假设我有3个字符串:

代码语言:javascript
复制
    char a[9];
    char b[20];
    char c[20];

我如何创建由前面字符串的内容组成的第三个字符串,记住a、b和c是由用户输入的。当我对a使用strcpy,然后对b和c使用strcat,然后打印结果字符串d时,我得到了垃圾字符。这是与每个字符串的空终止符有关,还是我做错了什么?谢谢

编辑:

代码语言:javascript
复制
    void getBasicDetails(char date_of_birth[9], char first_name[20], 
    char last_name[20])
    {
        char temp_dob[9];
        char temp_fname[20];
        char temp_lname[20];
        char file_name[50];
        int stop = 1;
        printf("Patient's Date of Birth (in format dd/mm/yy) : "); // 2 and 5
        while (stop == 1)
        {
            scanf("%s", &temp_dob);
            emptyBuffer();
            if ((temp_dob[2] == '/' && temp_dob[5] == '/'))
            {
                stop = 0;
                break;  
            }
            else
            {
            printf("Enter in format dd/mm/yy\n");
            }
        }
      date_of_birth = temp_dob;
      date_of_birth[9] = '\0';

      printf("Patient's First Name : ");
      scanf("%s", &temp_fname);
      emptyBuffer();
      first_name = temp_fname;
      first_name[20] = '\0';

      printf("Patient's Last Name : ");
      scanf("%s", &temp_lname);
      emptyBuffer();
      last_name = temp_lname;
      last_name[20] = '\0';

      strcat(file_name, first_name);
      strcat(file_name, last_name);
      strcat(file_name, date_of_birth);
      puts(file_name);
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-13 12:41:23

我不确定,但是如果你想创建第三个由前面字符串的内容组成的字符串,那么试试这个:

代码语言:javascript
复制
   char str1[100];
   char str2[100];
   char str3[100];
   printf("Enter String1: \n");
   gets(str1);
   printf("\Enter String2:\n");
   gets(str2);
   strcpy(str3,str1);
   strcat(str3,str2);
   printf("String 3: %s", str3);
票数 -1
EN

Stack Overflow用户

发布于 2018-12-13 08:39:24

如果你不介意的话,你能把你的完整代码贴出来吗?现在,我假设a、b和c都包含一些字符串,而d是空的。

代码语言:javascript
复制
char a[9];
char b[20];
char c[20];
char d[60];

strcpy (b);
strcpy (a);
strcpy (c);
strcpy (d);
strcat (d, a);
strcat (d, b);
strcat (d, c);
puts(d);
printf(d);

此外,您还可以利用sprintf函数来执行相同的操作:

代码语言:javascript
复制
sprintf(d, "%s%s%s", a, b, c)

如果我这样做是正确的,这应该会返回您想要的正确结果。有关strcat()的更多信息,请查看此链接:https://www.tutorialspoint.com/c_standard_library/c_function_strcat.htm

有关sprintf()的更多信息,请查看此链接:https://www.geeksforgeeks.org/sprintf-in-c/

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53753319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档