指针,函数
#include<stdio.h>#include<string.h>
#define MAX 1024
int n;
int main()
{
void fun(char *s);
char a;
scanf("%s",a);
n=strlen(a);
fun(a);
}
void fun(char *s)
{
int i=0;
char p;
p=s;
for(i;i<n;i++)
s=s;
s=p;
s=0;
puts(s);
}
//编写函数fun(char *s),其功能是:把字符串中所有字符前移一个位置,串中的第1个字符移到最后
//为什么我这输入abcd,只输出bcd? 改一下,最下面哪个s=p和s=0;改为s=p 本帖最后由 hhp_3533 于 2020-12-22 23:02 编辑
把改成s=0改成s=p;不就行了?你少算了一个结束符'\0'
for(i;i<n;i++)
s=s;
循环最后执行的是s=s;s等于什么?
然后s=p相当于s=p?
s=0?
你把puts改成:
for(i=0;i<=n;i++)
{
printf("%c\t",s);//?没显示出来[ i ]
}
看看是什么样子的.... #include<stdio.h>
#include<string.h>
#define MAX 1024
int n;
int main()
{
void fun(char *s);
char a;
scanf("%s",a);
n=strlen(a);
fun(a);
}
void fun(char *s)
{
int i=0;
char p;
p=s;
for(i;i<n;i++)
s=s;
s=p;
puts(s);
} #include<stdio.h>
#include<string.h>
#define MAX 1024
int n;
int main()
{
void fun(char *s);
char a;
scanf("%s",a);
n=strlen(a);
fun(a);
}
void fun(char *s)
{
int i=0;
char p;
p=s;
for(;i<n-1;i++)
{
s=s;
}
s=p;
s[++i]='\0';
puts(s);
} 你的是s是把\0赋值给i而不是i++
循环中也多进行了一次赋值
而且你的i++和i等与把\0和p同时赋给s
大概就这三点错误 #include<stdio.h>
#include<string.h>
#define MAX 1024
int n;
int main()
{
void fun(char *s);
char a;
scanf("%s", a);
n = strlen(a);
fun(a);
}
void fun(char *s)
{
int i = 0;
char p;
p = s;
for (i;i<n;i++)
s = s;
s = p; // 字符已经前移了一位,若第一个字符不占此位,否则此位上就是结束符
s = '\0'; // 重新加上结束符
puts(s);
} 本帖最后由 jackz007 于 2020-12-23 01:31 编辑
#include <stdio.h>
#include <string.h>
#define MAX 1024
void fun(char * s)
{
int i , n ;
char p ;
p = s ;
for(n = strlen(s) , i = 0 ; i < n - 1 ; i ++) s = s ;
s = p ;
}
int main(void)
{
char a ;
scanf("%s" , a) ;
fun(a) ;
printf("%s\n" , a) ;
}
页:
[1]