假设我有3个字符串:
char a[9];
char b[20];
char c[20];
我如何创建由前面字符串的内容组成的第三个字符串,记住a、b和c是由用户输入的。当我对a使用strcpy,然后对b和c使用strcat,然后打印结果字符串d时,我得到了垃圾字符。这是与每个字符串的空终止符有关,还是我做错了什么?谢谢
编辑:
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);
}
发布于 2018-12-13 12:41:23
我不确定,但是如果你想创建第三个由前面字符串的内容组成的字符串,那么试试这个:
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);
发布于 2018-12-13 08:39:24
如果你不介意的话,你能把你的完整代码贴出来吗?现在,我假设a、b和c都包含一些字符串,而d是空的。
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函数来执行相同的操作:
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/
https://stackoverflow.com/questions/53753319
复制相似问题