标题:求大神协助:调用getString函数将该英文句子读入二维字符数组,然后调用函数 ...
取消只看楼主
dghaohao0823
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2019-12-28
结帖率:0
已结贴  问题点数:20 回复次数:0 
求大神协助:调用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



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




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

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