循环左移以及定义指针出现编译正确运行结果不显示
定义的指针如果想把它当作数组使用的话必须要先让指针指向一个数组才可使用,否则直接定义指针当数组使用的话运行是没有结果的。
如
int a[10]={1,2,3};
int *p;
p=a;
printf("%d",p[10]);
此时的指针p才可以当做数组使用.
下面是循环左移的代码块
#include<stdio.h>
#include<string.h>
char *fun(char *str,int m) //将指针当数组使用时必须先定义一个数组,让指针指向数组的首地址才能当数组用
{ //定义数组尤其在函数内一定要初始化否则使用可能会出现意想不到的错误
char t[100]={0};
int j;
for(int i=0;i<m;i++) //暂存位移的字符串
{
t[i]=str[i];
}
for(j=0;str[j]!=0;j++) //将后面的字符串往左移m位
{
str[j-m]=str[j];
}
int i=0;
printf("%d",j);
for(;str[j-m]!='\0';j++) //将暂存的字符串移到后面
{
str[j-m]=t[i++];
}
return str;
}
//char *fun(char *str,int m)
//{
//
// while (m-- > 0)
// {
// char tmp = str[0];
// int i = 1;
// while (str[i] != '\0')
// {
// str[i - 1] = str[i];
// i++;
// }
// str[i - 1] = tmp;
// }
// return str;
//}
void main()
{
char s[100];
int m;
printf("Please input string:");
scanf("%s",s);
printf("Enter m:");
scanf("%d",&m);
if (m > strlen(s))
{
printf("\nData error.\n");
return;
}
printf("Result is:%s\n",fun(s,m));
}
内容写的不好望理解,有问题欢迎在评论区留言。