A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 baye1992 于 2016-3-11 15:51 编辑
  1. </blockquote></div><div class="blockcode"><blockquote>#include <stdio.h>
  2. #include <string.h>
  3. #define LEN 3
  4. int main(int argc, const char * argv[]) {

  5.     //设置个字符串数组指针
  6.     char *str[LEN];
  7.     //循环录入字符串

  8.     for (int i = 0; i<LEN; i++) {
  9.         printf("请输入第%d个字符串:\n",i+1);
  10.         gets(&str[i]);
  11.     }
  12.     //循环比较
  13.     for (int i = 0; i<LEN; i++) {
  14.         for (int j = 0; j<LEN-i-1; j++) {
  15.             if (strcmp(&str[j], &str[j+1])>0) {
  16.                 char *p = str[j];
  17.                 str[j] = str[j+1];
  18.                 str[j+1] = p;
  19.             }

  20.         }
  21.     }
  22.    
  23.     //打印字符串
  24.     for (int i = 0; i<LEN; i++) {
  25.         puts(&str[i]);
  26.     }
  27.     printf("\n");
  28.     return 0;
  29. }
复制代码

求完善~~
因为gets()会有警告,但是把gets()换成fgets()打印结果又是一堆乱码,该怎么弄啊~~?

2 个回复

正序浏览
怎么我自己看代码只显示了3行~~?
回复 使用道具 举报
本帖最后由 baye1992 于 2016-3-11 15:52 编辑

#include <stdio.h>
#include <string.h>
#define LEN 3
int main(int argc, const char * argv[]) {

    //设置个字符串数组指针
    char *str[LEN];
    //循环录入字符串

    for (int i = 0; i<LEN; i++) {
        printf("请输入第%d个字符串:\n",i+1);
        gets(&str);
    }
    //循环比较
    for (int i = 0; i<LEN; i++) {
        for (int j = 0; j<LEN-i-1; j++) {
            if (strcmp(&str[j], &str[j+1])>0) {
                char *p = str[j];
                str[j] = str[j+1];
                str[j+1] = p;
            }

        }
    }
   
    //打印字符串
    for (int i = 0; i<LEN; i++) {
        puts(&str);
    }
    printf("\n");
    return 0;
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马