❶ 一道c语言编程:利用指针作函数参数,将从键盘输入的字符串逆序存放,并输出。我的答案运行之后没有结果
完全按照你的意愿
改的
问题1:你用指针pt传递数组a,但是在fun函数里,却没有使用该指针反而新建局部数组a;
问题2:fun函数里,定义的b数组,你是指定下标赋值的,缺少结束符‘\0’,如果字符未满,那么输出时无法判断字符串结束符,这里我用memset函数把b每一个字符都初始成‘\0’,你也可以在循环赋值结束后,在b最后一个字符后面再赋一个字符‘\0’.注意定义字符数组,如希望放10个字符,建议定义11大小蔽租埋,因为要留1个‘\0’
问题3:你的赋值循环for(i=0;i<10;i++),直接写的宏蚂上限10,如果输入小于10字符。那么就会取到空值。这里我用strlen函数读取了a的字符长度作为上限
#include<stdio.h>
#include<string.h>
int main()
{
void fun(char *pt);
char a[10],*pt;
pt=a;
gets(a);
fun(pt);
puts(a);
return 0;
}
void fun(char *pt)
{
char b[10];int i;
memset(b,'型凯\0',sizeof(char)*10);
for(i=0;i<strlen(pt);i++)
b[strlen(pt)-1-i]=pt[i];
strcpy(pt,b);
}
❷ C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符
#include <stdio.h>
#include <string.h>
void input(char st[]);//定义输入函数
void reverse(char st[]);//定义反序函数
int main()
{
char s[20];
input(s);//调用输入函数
printf("Original string: %s ", s);//输出原字符串
reverse(s);//调用反序函数
printf("New string: %s ", s);//输出反序后的字符串
return 0;
}
void input(char st[])
{
printf("Please enter string: ");
gets(st);
}
//反序函数
void reverse(char st[])
{
int n=strlen(st);
for (int i=0, j=n-1, t; i<(n/2); t=st[i], st[i]=st[j], st[j]=t, i++, j--);
}
❸ c语言程序 输入一字符串存入数组中,逆序存放并输出
对键盘输入的字符串进行逆序,逆序后的字符串仍然保留在原来的字符数组中,最后输出。(不得调用任何字符串处理函数),例如:
输入
hello
world
输出
dlrow
olleh
(3)c语言指针逆序存放字符串扩展阅读:
字符串在存储上类喊槐似字符数组,它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要圆仿条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。
❹ C语言编程:用指针接收键盘输入的字符串并逆序输出到屏幕(串长度小于100),怎么做
代码文本:
#include "stdio.h"
int main(int argc,char *argv[]){
char s[100],*p;
printf("Please enter a string... ");
scanf("%99s",s);//输入字符串
for(p=s;*p!='