请问一个字符串转置程序的问题
请问我写的这个程序有什么问题?运行后显示转置后什么都没有,我的想法是设置两个数组,第一个存储用户输入的字符串a1,另一个显示转置后的字符串a2,具体就是从a1最后一个元素开始直接赋给a2的第一个元素,然后依次复制完所有的元素,最早的版本是碰到空格后,后面的字符就都没有了。有没有什么简单的方法实现这个转置的功能么?#include<stdio.h>#include<string.h>
void main ()
{
int i,j,n;
char a1;
printf ("请输入一串字符串:");
scanf ("%s", &a1);
n = strlen(a1);
j = n-1;
char a2;
for (j; j >= 0; j--)
{
i = n - j - 1;
if (a1 = '\0')
{
getchar();
}
else
{
a2 = a1;
}
}
printf ("转置后的字符串为:%s", a2);
} 感谢各位,我用gets函数就能用了#include<stdio.h>
#include<string.h>
void main ()
{
int i,j,n;
char a1;
printf ("请输入一串字符串:");
gets(a1);
n = strlen(a1);
j = n-1;
char a2;
for (j; j >= 0; j--)
{
i = n - j - 1;
a2 = a1;
}
printf ("转置后的字符串为:%s", a2);
} 判断用 == ,而不是一个 = 可以直接用指针访问,比较简单
另外,strlen函数计算长度并不包括'\0'吧,可以试试 有两处错误
1、scanf中a1不应该加&,因为a1本来就是数组的地址
2、for循环中的if条件写错了你写成赋值了,应该是两个等号
还有一处可能与编译器有关,不同的编译器下可能会不一样
a2的长度定义,建议改成n+1,然后在for循环结束后,printf之前加一句a2='\0';
有一点我没明白你的用意,
for中的if目的是什么?
里面的getchar又是干什么的?getchar()没有用的话,改为continue如何? sunrise085 发表于 2020-4-9 14:39
有两处错误
1、scanf中a1不应该加&,因为a1本来就是数组的地址
2、for循环中的if条件写错了你写成赋值了 ...
你好,我改了一下,但是我发现,scanf就直接不能获取空格后的字符,请问有办法么,将带空格的字符串存入数组,然后用我的想法进行字符串转置#include<stdio.h>
#include<string.h>
void main ()
{
int i,j,n;
char a1;
printf ("请输入一串字符串:");
scanf ("%s", a1);
printf ("%s", a1);
n = strlen(a1);
j = n-1;
char a2;
for (j; j >= 0; j--)
{
i = n - j - 1;
if (a1 == '\0')
{
getchar();//遇到空格,将空格截取下来,直接进行下一个元素的复制,我怕碰到空格就程序结束,或者卡住
}
else
{
a2 = a1;
}
}
printf ("转置后的字符串为:%s", a2);
} #include<stdio.h>
#include<string.h>
void main ()
{
int i,j,n;
char a1;
printf ("请输入一串字符串:");
scanf("%s",a1);
n = strlen(a1);
printf("a1数组的有效长度为:%d\n",n);
char a2;//strlen()长度不包括尾部\0;
for (j = n - 1; j >= 0; j--)
{
i = n - j - 1;
a2 = a1;
}
a2 = '\0';//数组最后加上结束标志\0;
printf ("转置后的字符串为:%s", a2);
} #include<stdio.h>
#include<string.h>
void main ()
{
int i,j = 0,n;
char a1;
printf ("请输入一串字符串:");
while((a1 = getchar()) != '\n')
;
a1 = '\0';
n = strlen(a1);
printf("a1数组的有效长度为:%d\n",n);
char a2;//strlen()长度不包括尾部\0;
for (j = n - 1; j >= 0; j--)
{
i = n - j - 1;
a2 = a1;
}
a2 = '\0';//数组最后加上结束标志\0;
printf ("转置后的字符串为:%s", a2);
} Doughnut 发表于 2020-4-9 14:50
你好,我改了一下,但是我发现,scanf就直接不能获取空格后的字符,请问有办法么,将带空格的字符串存入 ...
scanf函数应该碰到空格或者回车退出函数体结束;
页:
[1]