对于我的程序我需要在不使用标准库或IO函数的情况下将char(char)添加到字符串(char *)。 例如:
char *s = "This is GOO";
char c = 'D';
s = append(s, c);
和s会产生字符串“这很好”。 是否有一些正确的方法来操纵数组以实现这一目标? 此外,用多个字符生成字符串就足够了。 我很确定我可以使用malloc,但不是肯定的......
char * app(char* s, char c){
char *copy;
int l = strlen_(s);
copy = malloc(l+1);
copy = s;
copy[l] = c;
copy[l+1] = '\0';
return copy;
}
不能使用strcpy
答案 0 :(得分:1)
没有给出答案,因为这听起来像是课堂作业,这就是你想在高层做的事情:
'\0'
终止符。'\0'
终止符。(如果您允许修改现有字符串,那么您可以跳过第2步和第3步。但是在您的示例char *s = "This is GOO"
中s
指向不可修改的字符串文字,这意味着您可以' t修改它并且必须使用副本。)
对您发布的代码的评论:
char * app(char* s, char c) {
char *copy;
int l = strlen_(s);
copy = malloc(l+1); /* should be +2: +1 for the extra character and +1 for \0 */
copy = s; /* arrays must be copied item by item. need a for loop */
copy[l] = c;
copy[l+1] = '\0';
return copy;
}
答案 1 :(得分:1)
#include <stdlib.h>
char *append(char *s, char c)
{
int i = 0, j = 0;
char *tmp;
while (s[i] != '\0')
i++;
tmp = malloc((i+2) * sizeof(char));
while (j < i)
{
tmp[j] = s[j];
j++;
}
tmp[j++] = c;
tmp[j] = '\0';
return tmp;
}
int main(void)
{
char *s = "This is Goo";
char c = 'D';
s = append(s, c);
return 0;
}