我的fun函数有错吗
{:10_243:} {:10_277:}#include <stdio.h>
#include <string.h>
#define N 80
void fun (char*w,intm)
{
char c;
int len=0;
while(w!='\0')
{
len++;
}
printf("该字符串长度为%d",len);
int i , j;
for (i = 0 ; i < m ; i++)
c = 0;//初始化
for (j = 0 ; j < m ; j++)//暂存需要往后移动的m个字符
c = w;
for (i = m ; i < len ; i++)//把m+1到最后的字符往前移
w = w;
for (j = len-m,i=0 ; j < len ; j++,i++)
{
w = c;
}
printf("移动后:");
for(i=0;i<len;i++)
{
printf("%c ",w);
}
}
void main()
{
FILE *wf;
chara= "ABCDEFGHIJK",b= "ABCDEFGHIJK";
intm;
printf("The origina string :\n");
puts(a);
printf("\n\nEnterm: ");
scanf("%d",&m);
fun(a,m);
printf("\nThe string after moving :\n");
puts(a);
printf("\n\n");
/******************************/
wf=fopen("out.dat","w");
fun(b,3);
fprintf(wf,"%s",b);
fclose(wf);
/*****************************/
} 本帖最后由 jackz007 于 2018-9-10 12:17 编辑
可以很负责任地告诉你,确实有错,问题点为:
for (j = len-m,i=0 ; j < len ; j++,i++)
{
w = c;
}
w = c ; 2 个数组居然使用了相同的索引下标,你说有没有问题?
应该这样改:
for(i = 0 ; i < m ; i ++) w = c ;
w = 0 ;
另外,你的代码不够简洁,下面是完全按照你的思路给出的 fun()
void fun(char * w , const int m)
{
char c ;
int i , len = 0 ;
while(w) len ++ ;
printf("该字符串长度为%d\n" , len) ;
for(i = 0 ; i < m ; i ++) c = w ;
for(i = m ; i < len ; i ++) w = w ;
for(i = 0 ; i < m ; i ++) w = c ;
w = 0 ;
printf("移动后:") ;
for(i = 0 ; i < len ; i++) printf("%c" , w);
printf("\n") ;
}
你可以试一试,看看是不是你需要的,希望能解决你的问题。
jackz007 发表于 2018-9-10 10:43
可以很负责任地告诉你,确实有错,问题点为:
是我需要的!!!!!!!!!!!!!!! 太棒啦~
谢谢{:10_297:}{:10_297:}
页:
[1]