在C中,打印字符串后,“at”符号

时间:2015-11-26 17:45:16

标签: c string insert

我写了一个函数,在字符串'i'处插入一个子字符串,但我有问题。当位置i = {1或2或3}时,在我打印完最后一个字符串后,'i'位置会出现一个'@'符号

 void insert_sir(char *s , char inserted_s[20] , int pos )
{
    char result_s[30] ;
    strncpy(result_s,s,pos - 1);
    strcat(result_s,inserted_s);
    strcat(result_s,s + pos - 1);
    printf("%s",result_s);

}

1 个答案:

答案 0 :(得分:0)

您需要初始化您的char数组,否则您将从内存中获取随机数据。您可以轻松使用memset()函数以相同的字符填充数组。在这种情况下,我用空值填充它,以便printf只输出所需的文本,因为null是标准的终止字符。

void insert_sir(char *s , char inserted_s[20] , int pos )
{
    char result_s[30] ;
    memset(result_s,0,30);
    strncpy(result_s,s,pos - 1);
    strcat(result_s,inserted_s);
    strcat(result_s,s + pos - 1);
    printf("%s",result_s);
}