我这C程序要怎么改才可以正常输入啊?

来源:百度知道 编辑:UC知道 时间:2024/05/17 06:25:27
写一个函数strmncopy(),实现将已知字符串a的第m个字符开始的n个字符复制给字符串b。
函数格式:void strmncopy(char a[ ],int m, int n, char b[ ]){函数体}
以下是我写的
#include<stdio.h>
void main()
{void strmncopy(char a[],int m, int n, char b[]);
char A[100],B[100];
int M,N,i=0;
do
{
scanf("%c",&A[i]);
i++;
}
while(A[i]!='#');
scanf("%d",&M);
scanf("%d",&N);
strmncopy(A,M,N,B);
}
void strmncopy(char a[],int m, int n, char b[])
{
int j,z=0;
for(j=m;j<=m+n;j++)
{b[z]=a[j];
z++;
}
for(z=0;z<n;z++)
{
printf("%c",b[z]);
}
}
没有ERROR,但要怎么改才可以输入啊?M和N都没法输,大家帮忙啊,谢谢!

/*根据你的意思给改了一下,改的地方有注释,其实挺简单,祝你好运*/

#include<stdio.h>

void main()
{
void strmncopy(char a[],int m, int n, char b[]);

char A[100],B[100];
int M,N,i=0;

do
{
printf("enter a(# to end):");
scanf("%c",&A[i]);
getchar();/*接收回车*/
i++;
}while(A[i-1]!='#');/*应该是上一个值*/

printf("M:");
scanf("%d",&M);
printf("N:");
scanf("%d",&N);

strmncopy(A,M,N,B);

}

void strmncopy(char a[],int m, int n, char b[])
{
int j,z=0;
for(j=m;j<=m+n;j++)
{
b[z]=a[j];
z++;
}
for(z=0;z<n;z++)
{
printf("%c",b[z]);
}
}

while(A[i]!='#');
把这一句改成while(A[i-1]!='#'); 就对了,其他的不用改。