用啊哈C编译正常,c4droid就出现问题
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
//将p字符串插入到ch的cur位置
void plusstr(char *ch, char *p, int cur)// p plus
{
char *i, *j;
int m, n;
int a = strlen(ch);
int b = strlen(p);
n = a + b;
ch = (char *)realloc(ch, n * sizeof(char));
if(n)
for (m = n -1; m > cur - 2; m--)
{
if (m > b + cur - 2)//倒序移位
ch[m] = ch[m - b];
else //倒序插入p字符串
ch[m] = p[m - cur +1];
printf("%c----%d---%d\n", ch[m],m,n ); //测试每个字符串情况,这个地方输出正常
}
// printf("%d--\n", b + cur-2);
//ch = i;
//j = ch;
//ch[n]='\0';
printf("%s--%d\n", ch, strlen(ch));
}
void data(char *ch)//给ch附上0到9数字字符
{
int i = 0;
while (i < 10)
{
ch[i] = '0' + i++;
//printf("%d\n",i);
}
ch[i] = '\0';
printf("%s\n", ch);//输出正常
}
void i2(char *ch, int *cur)
{
data(ch);
//plusstr(ch,"abc",4);
//plusstr(ch,"abc",4);
plusstr(ch, "abcdefg", 4);
printf("%s--%d\n", ch, strlen(ch));//这里就出现问题了,和结果不对,是乱码
}
int main()
{
char *ch = (char *)malloc(sizeof(char) * 11);
ch[0] = '5';
int cur[] = { 4, 7, 3, 3 };
// i1();
i2(ch, cur);
// printf("%d",strlen(ch));
free(ch);//这里也出现问题,编译器会在输出结果出现莫名其妙的英文单词
getch();
return 0;
}
唉,各种求救
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
//将p字符串插入到ch的cur位置
void plusstr(char *ch, char *p, int cur)// p plus
{
char *i, *j;
int m, n;
int a = strlen(ch);
int b = strlen(p);
n = a + b;
ch = (char *)realloc(ch, n * sizeof(char));
if(n)
for (m = n -1; m > cur - 2; m--)
{
if (m > b + cur - 2)//倒序移位
ch[m] = ch[m - b];
else //倒序插入p字符串
ch[m] = p[m - cur +1];
printf("%c----%d---%d\n", ch[m],m,n ); //测试每个字符串情况,这个地方输出正常
}
// printf("%d--\n", b + cur-2);
//ch = i;
//j = ch;
//ch[n]='\0';
printf("%s--%d\n", ch, strlen(ch));
}
void data(char *ch)//给ch附上0到9数字字符
{
int i = 0;
while (i < 10)
{
ch[i] = '0' + i++;
//printf("%d\n",i);
}
ch[i] = '\0';
printf("%s\n", ch);//输出正常
}
void i2(char *ch, int *cur)
{
data(ch);
//plusstr(ch,"abc",4);
//plusstr(ch,"abc",4);
plusstr(ch, "abcdefg", 4);
printf("%s--%d\n", ch, strlen(ch));//这里就出现问题了,和结果不对,是乱码
}
int main()
{
char *ch = (char *)malloc(sizeof(char) * 11);
ch[0] = '5';
int cur[] = { 4, 7, 3, 3 };
// i1();
i2(ch, cur);
// printf("%d",strlen(ch));
free(ch);//这里也出现问题,编译器会在输出结果出现莫名其妙的英文单词
getch();
return 0;
}
唉,各种求救