#include <stdio.h>
char *strDup(char *,int);
int main (void)
{
char p[1000];
int n=0;
char *q;
printf("plz enter a string : ");
gets(p);
printf("plz enter the number of the characters you want to duplicate : ");
scanf("%d",&n);
printf("the duplicated string is : ");
q=strDup(p,n);
printf("%s\n",q);
return 0;
}
char *strDup(char *p,int n)
{
int ctr=0;
int help;
char q[1000];
for(int i=0;p[i]!='\0';i++)
{
ctr++;
}
if (n<0)
{
printf("!!ERROR!!");
}
else if(n==0||n>ctr)
{
for(int i=0;p[i]!='\0';i++)
{
help=p[i];
p[i]=q[i];
q[i]=help;
}
}
else
{
for(int i=0;p[i]<=n;i++)
{
help=p[i];
p[i]=q[i];
q[i]=help;
}
}
return q;
}
Даже после того, как редактировал его, он не работает , и я попытался сделать код максимально простым для меня, поэтому, пожалуйста, не делайте это тяжело для меня.
'char * p; получает (* p); 'неправильно, вам нужна комната:' char p [100]; get (p); 'в любом случае, никогда не использовать' gets' use 'fgets (s, sizeof s, stdin);' –
ok после редактирования он работает на всех условиях, кроме последнего, и самый важный –
Joachim отвечает на это, вы возвращают адрес локальной переменной, возвращают выделенную строку: 'q = malloc (n + 1); ... return q; ' –