| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1684 人关注过本帖
标题:对字符串进行倒序排序
只看楼主 加入收藏
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
结帖率:90.38%
收藏
已结贴  问题点数:20 回复次数:6 
对字符串进行倒序排序
对字符串进行倒序排序,运行时在输入完字符串后就无法正常运行,是什么原因?代码如下:
程序代码:
#include"stdio.h"
#define QW "quit"
char *ar(char *p){
    char *q;
    int i;
    i=1;
    for(*(p+strlen(p)-i);*p;q++,i++)
        *q=*(p+strlen(p)-i);
    *q='\0';
    return q;
}
int main(void){
    char *t;
    char *w;
    t=(char *)malloc(sizeof(char)*100);
    printf("输入字符串:");
    while(strcmp(gets(t),QW)){
        w=ar(t);
        printf("%s\n",w);
        printf("输入字符串:");
    }
    return 0;
}
搜索更多相关主题的帖子: 字符串 排序 char 输入 printf 
2020-06-13 22:59
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:10 
程序代码:
#include <stdio.h>

#define MAX_LEN 4096

int main(void)
{
    char c, s[MAX_LEN] = {0}, *sp;

    for (sp = s; (c = getchar()) != '\n' && c != EOF; *sp++ = c);
    for (; --sp >= s; putchar(*sp));
    printf("\n");
}

梦想拥有一台龙芯3A-4000
2020-06-13 23:59
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
收藏
得分:0 
以下是引用ditg在2020-6-13 23:59:06的发言:

#include <stdio.h>

#define MAX_LEN 4096

int main(void)
{
    char c, s[MAX_LEN] = {0}, *sp;

    for (sp = s; (c = getchar()) != '\n' && c != EOF; *sp++ = c);
    for (; --sp >= s; putchar(*sp));
    printf("\n");
}

这份代码只能对字符进行倒序排序,而且输入输出都是字符的形式,我要求用字符串的形式进行输入输出.在循环中将字符串传递给函数,并且在函数中进行。

[此贴子已经被作者于2020-6-14 20:06编辑过]

2020-06-14 20:05
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
收藏
得分:0 
以下是引用hffjhhh在2020-6-13 22:59:36的发言:

对字符串进行倒序排序,运行时在输入完字符串后就无法正常运行,是什么原因?代码如下:
#include"stdio.h"
#define QW "quit"
char *ar(char *p){
    char *q;
    int i;
    i=1;
    for(*(p+strlen(p)-i);*p;q++,i++)
        *q=*(p+strlen(p)-i);
    *q='\0';
    return q;
}
int main(void){
    char *t;
    char *w;
    t=(char *)malloc(sizeof(char)*100);
    printf("输入字符串:");
    while(strcmp(gets(t),QW)){
        w=ar(t);
        printf("%s\n",w);
        printf("输入字符串:");
    }
    return 0;
}

运行时在输入完字符串后就无法正常运行,是什么原因?
2020-06-14 23:53
fulltimelink
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:171
专家分:752
注 册:2020-4-1
收藏
得分:10 
for没操作p,会死循环
程序代码:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define QW "quit"
char * gets(char *);
char *ar(char *p) {
    char *begin = p;
    char *last = p + strlen(p)-1;
    while (begin < last) {
        char temp = *last;
        *last = *begin;
        *begin = temp;
        begin++;
        last--;
    }
    return p;
}
int main(void) {
    char *t;
    char *w;
    t = (char *)malloc(sizeof(char) * 100);
    printf("输入字符串:");
    while (strcmp(gets(t), QW)) {
        w = ar(t);
        printf("%s\n", w);
        printf("输入字符串:");
    }
    free(t);
    return 0;
}


[此贴子已经被作者于2020-6-15 14:17编辑过]

2020-06-15 07:09
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
收藏
得分:0 
回复 5楼 fulltimelink
我将函数改为这样:这时for循环不需要判断p,只需要判断i<=j.就可以结束循环,但不知为何仍然无法实现倒序输出?
程序代码:
char *ar(char *p){
    char *q;
    q=(char *)malloc(sizeof(char)*100);
    int i,j;
    j=strlen(p);
    for(i=1;i<=j;q++,i++){
        *q=*(p+j-i);
    }
    *q='\0';
    return q;
}
2020-06-15 20:36
fulltimelink
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:171
专家分:752
注 册:2020-4-1
收藏
得分:0 
回复 6楼 hffjhhh
[s]返回谁,就别动谁[/s]   (这个说法不准)
程序代码:
char *ar(char *p) {
    char *q;
    q = (char *)malloc(sizeof(char) * 100);
    char *qq = q;
    int i, j;
    j = strlen(p);
    for (i = 1; i <= j; qq++, i++) {
        *qq = *(p + j - i);
    }
    *qq = '\0';
    return q;
}



程序代码:
char *ar(char *p) {
    char *q;
    q = (char *)malloc(sizeof(char) * 100);
    int i, j;
    j = strlen(p);
    for (i = 1; i <= j; q++, i++) {
        *q = *(p + j - i);
    }
    *q = '\0';
    q -= j;
    return q;
}


[此贴子已经被作者于2020-6-16 13:15编辑过]

2020-06-16 10:54
快速回复:对字符串进行倒序排序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042778 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved