如何在C中将字符连接到字符串



这是一个练习,我必须构建一个函数,返回一个名为"secret identity"的字符串,该字符串由你的出生日期、你的姓名和你母亲的姓名组成(例如,如果是"02/12/2007"、"LUCY TOLKIEN"one_answers"JENNIFER",则返回"20070212LT*J"(,但我很难将字符(如"LUCY TOLKIEN"的"L"one_answers"T"(连接到名为"机密身份"的字符串中。我希望我能解释清楚。到目前为止,我所做的是:

int length(char * s) {
int i, n = 0;
for (i = 0; *(s + i) != ''; i++) {
n++;
}
return n;
}
void concatenate(char * s, char * t) {
int i = 0;
int j;
while (*(s+i) != '') {
i++;
}
for (j = 0; *(t+i) != ''; j++) {
*(s + i) = *(t + j);
i++;
}
*(s + i + 1) = '';
}
void copy(char * dest, char * orig) {
int i;
for (i = 0; *(orig + i) != ''; i++) {
*(dest + i) = *(orig + i);
}
*(dest + i) = '';
}
void geraIdentidade(void) {
char * ident;
int lname, ldate, lmom;
char name[80];
printf("Name: ");
scanf(" %[^n]s", name);
lname = length(name);
char date[11];
printf("Date: ");
scanf(" %[^n]s", date);
ldate = length(date);
char mom[20];
printf("Name (mom): ");
scanf(" %[^n]s", mom);
lmom = length(mom);
char day[3], month[3], year[5];
int i, j, k; 
for (i = 0; date[i] != '/'; i++) {
day[i] = date[i];
day[i + 1] = '';
}
for (j = 3, i = 0; date[j] != '/'; j++, i++) {
month[i] = date[j];
month[i + 1] = '';
}
for (k = 6, i = 0; k <= 9; k++, i++) {
year[i] = date[k];
year[i + 1] = '';
}
ident = (char*)malloc((lmom + ldate + lname) * sizeof(char)); //change lenght
if (ident != NULL) {
copy(ident, year);
concatenate(ident, month);
concatenate(ident, day);
}
else {
return NULL;
}
printf("%sn", ident);

}
int main(void) {
geraIdentidade();
return 0;
}

在我看来,您的代码中有3个函数:

int length(char * s)
void concatenate(char * s, char * t)
void copy(char * dest, char * orig)

当您在<string.h>:中使用一些C标准函数时,您可以使代码更容易地执行

size_t strlen(const char *s); // for length
char *strcpy(char *dest, const char *src); // for copy 
char *strcat(char *dest, const char *src); // for concatenation

当您想连接stringcharacter时,只需要将character转换为string,方法是将字符添加到要连接的字符中。例如,如果要将T连接到字符串20070212L:

#include <stdio.h>
#include <string.h>
int main()
{
char str[11] = "20070212L";
char ch[2] = "";
ch[0] = 'T';
strcat(str, ch);
printf("str = %s", str);
return 0;
}

输出:

str = 20070212LT 

最新更新