标题:求大神协助:调用getString函数将该英文句子读入二维字符数组,然后调用函数 ...
只看楼主
dghaohao0823
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2019-12-28
结帖率:0
已结贴  问题点数:20 回复次数:2 
求大神协助:调用getString函数将该英文句子读入二维字符数组,然后调用函数sort,利用选择或冒泡算法对上述句子中的单词进行排序(按字母序)
知识点:函数,数组、文件综合练习

创建用户库strpro.h和openfile.h,其中strpro.h中包含getString、sort和read函数,而openfile.h中包含openw函数。
在main函数中提示用户输入一句话,要求:

1.    调用getString函数将该英文句子读入二维字符数组,然后调用函数sort,利用选择或冒泡算法对上述句子中的单词进行排序(按字母序)。
2.    将排好序的句子写入到磁盘文件data.txt中。要求打开data.txt文件的操作须调用openw函数完成,打开时须检查同名文件是否存在,并提示用户是否覆盖原文件。
3.    调用函数read将data.txt中的内容读回显示到屏幕上。
问题:冒泡有问题,闪退。
代码如下:

#pragma once
#define LSIZE 81
char string[][LSIZE] = { 0 };
int getString();
void sort();
void read();
int i = 0,j = 0;
int getString()
{
 char c;
 while ((c = getchar()) != '\n')
 {
  if (c == ' ')
  {
   i++;
   j = 0;
  }
  else
  {
   string[i][j] = c;
   j++;
  }
 }
 j = 0;
 printf("%d\n", i);
 return (i);
}

void sort()
{
 char temString[LSIZE] = {0};
 int a, b, c;
 for (a=0;a<i;a++)
 {
  b = a;
  for (c=a+1;c<i+1;c++)
  {
   if (strcmp(string[b], string[c]) > 0)
    b = c;
   if (b != a)
   {
    strcpy_s(temString, LSIZE, string[a]);
    strcpy_s(string[a], LSIZE, string[b]);
    strcpy_s(string[b], LSIZE, temString);
   }
  }
 }
}

void read()
{
 FILE* fp;
 char str[LSIZE] = {'\0'};
 fp = fopen("data.txt", "r");
 while (fscanf(fp, "%s", str) != EOF)
  puts(str);
 fclose(fp);
}
搜索更多相关主题的帖子: 调用 冒泡 sort string 函数 
2019-12-28 11:50
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
string定义了多大空间
2019-12-28 15:30
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
得分:10 
程序代码:
void sort()
{
    char temString[LSIZE] = {0};
    int a, b, c;
    for (a=0;a<i;a++){                 //a为循环次数。
        for(b=0;b<i-1;b++){            //冒泡:当前数与后一个数比较,大于则交换;小于不变,继续循环。
        //for(b=0;b<i-1-a;b++){        //由于每次循环大数都移至末尾,下次循环次数可以减少一次
            if (strcmp(string[b], string[b+1]) > 0){          
                strcpy_s(temString, LSIZE, string[b]);
                strcpy_s(string[b], LSIZE, string[b+1]);
                strcpy_s(string[b+1], LSIZE, temString);
                }
        }
    }
}
2019-12-28 15:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498692-1-1.html




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

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