首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

在指定位置安插字符

2013-10-18 
在指定位置插入字符/*在指定位置插入字符。*/#include stdio.h#include string.hvoid insert(char s[]

在指定位置插入字符
/*在指定位置插入字符。*/
#include <stdio.h>
#include <string.h>
void insert(char s[] , char t, int i)
{
char string[100];
if(!strlen(s))
string[0] = t;
else
{
strncpy(string,s,i);
string[i] = t;
string[i+1]='\0';
strcat(string,t);
strcat(string,(s+i));
strcpy(s,string);
}
}
main()
{
char str1[100],c;
int position;
printf("Please input str1:\n");
gets(str1);
printf("Please input a char:\n");
scanf("%c",&c);
printf("please input position :\n");
scanf("%d",&position);
insert(str1,c,position);
puts(str1);
}
运行完本程序后报警两处。这主要是在vc下运行,所以没考虑用fputs和fgets。
D:\jh\jh.c(13) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'char '
D:\jh\jh.c(13) : warning C4024: 'strcat' : different types for formal and actual parameter 2
给瞧瞧 c
[解决办法]
strcat(string, t)有问题
[解决办法]

void insert(char s[] , char t, int i)
{
    char *p = s;
    while (*p++); // 结果p指向'\0'下一个字符
    while (p > &s[i]) {
        *p = *(p - 1);
        --p;
    }
    *p = t;
}

[解决办法]
char *strcat(char *dest,char *src);
但是你传参数的时候确实一个字节!所以再改改吧


[解决办法]
引用:
void insert(char s[] , char t, int i)
{
    char *p = s;
    while (*p++); // 结果p指向'\0'下一个字符
    while (p > &s[i]) {
        *p = *(p - 1);
        --p;
    }
    *p = t;
}

++

热点排行