逆序存放
#include<stdio.h>#include<string.h>
void fun(char m[],char n[]);
int main()
{
char *a,*b;
scanf("%s",&a);
fun(a,b);
printf("%s",b);
}
void fun(char m[],char n[])
{
int i,j=0,t;
t=strlen(m);
for(i=t-1;i>=0;i--)
{
m=m;
j++;
}
}
为什么运行不出来,函数调用形式可以设为char fun(char m[],char n[])吗 看看主函数里 a 和 b 的定义,您想把字符串往什么空间里写?有给它们合适的存储空间吗? 本帖最后由 jackz007 于 2022-10-28 15:58 编辑
int main()
{
char *a,*b;
scanf("%s",&a);// 指针 a 并未指向任何内存地址,执行此句程序十有八九会奔溃
. . . . . .
void fun(char m[],char n[])
{
. . . . . .
for(i=t-1;i>=0;i--)
{
m=m ; // 这一句是什么意思?
修改版:
#include<stdio.h>
#include<string.h>
void fun(char m[], char n[])
{
int i , j , t ;
t =strlen(m) ;
for(i = 0 ; i < t ; i ++) n = m ;
n = '\0' ;
}
int main()
{
char a , b ;
scanf("%s",&a) ;
fun(a , b) ;
printf("%s\n" , b) ;
}
编译、运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
ABCDEF
FEDCBA
D:\\C> jackz007 发表于 2022-10-28 15:35
修改版:
编译、运行实况:
其实也没有十有八九会崩溃这么一说。尽管非常不推荐,但是如果上下能对应起来的话这么写也是能工作的,只不过允许的最长输入长度比较短,像这样
#include<stdio.h>
#include<string.h>
void fun(char m[]);
int main()
{
char *a;
scanf("%s",&a);
printf("%s\n",&a);
fun(&a);
printf("%s",&a);
}
void fun(char m[]){
int i=0,j;
char t;
j=strlen(m) - 1;
while(i < j)
{
t = m;
m = m;
m=t;
}
}
其中进行逆序部分的操作逻辑上有问题,做了比较大刀阔斧的改动
页:
[1]