题目:对字符串排序,然后输出到文件中
问题:不能得到正常的结果,未能进行正常排序
使用数据:tomcat apache crossfire
结果为: apach tomcat crossfire
使用软件:VC6.0
运行图片
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
FILE * fp;
int j = 0;
char str[3][20],tmp[20];
printf("Please input three strings:\n");
for(int i = 0; i < 3; i++)
{
gets(str[i]);
}
for(i = 0; i < 2; i++) // 选择排序
{
int k = i;
for(j = i+1; j < 3; j++)
{
if(strcmp(str[k],str[j]) > 0)
{
k = j;
}
}
if(k != i)
{
strcpy(tmp,str[i]);
strcpy(str[i],str[k]);
strcpy(str[k],tmp);
}
if((fp = fopen("D:/test.txt","w")) == NULL) // 打开文件
{
printf("Can not open file!\n");
exit(0);
}
for(i = 0; i < 3; i++)
{
fputs(str[i],fp);
fputs("\n",fp);
}
printf("File is done!\n");
}
return 0;
}
代码修改如下,改动处见注释,供参考:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
FILE * fp;
int j = 0, i;
char str[3][20],tmp[20];
printf("Please input three strings:\n");
for(i = 0; i < 3; i++)
{
scanf("%s", str[i]); //gets(str[i]); 修改
}
for(i = 0; i < 2; i++) // 选择排序
{
int k = i;
for(j = i+1; j < 3; j++)
{
if(strcmp(str[k],str[j]) > 0)
{
k = j;
}
}
if(k != i)
{
strcpy(tmp,str[i]);
strcpy(str[i],str[k]);
strcpy(str[k],tmp);
}
}// 修改
if((fp = fopen("D:\\test.txt","w")) == NULL) // 修改
//if((fp = fopen("D:/test.txt","w")) == NULL)
{
printf("Can not open file!\n");
exit(0);
}
for(i = 0; i < 3; i++)
{
if (i) //修改
fputs(" ",fp);//fputs("\n",fp); 修改
fputs(str[i],fp);
}
printf("File is done!\n");
fclose(fp); //修改
//} 修改
return 0;
}
你想得到正确的是咋样
回答:
不同的编程语言都可以进行字符串排序。常见的排序算法有冒泡排序、快速排序和归并排序等。
在Java中,可以使用sort()方法对字符串进行排序。例如,可以使用Arrays类的sort()方法对字符串数组进行排序:
String[] strArr = {"hello", "world", "java", "programming"};
Arrays.sort(strArr);
for (String s : strArr) {
System.out.println(s);
}
输出结果为:
java
hello
programming
world
在C#中,可以使用Array类的Sort()方法对字符串数组进行排序。例如,可以使用以下代码对字符串数组进行排序:
string[] strArr = {"hello", "world", "csharp", "dotnet"};
Array.Sort(strArr);
foreach (string s in strArr) {
Console.WriteLine(s);
}
输出结果为:
csharp
dotnet
hello
world
在Python中,可以使用sort()函数对字符串列表进行排序。例如,可以使用以下代码对字符串列表进行排序:
strList = ["python", "java", "csharp", "ruby"]
strList.sort()
for s in strList:
print(s)
输出结果为:
csharp
java
python
ruby
输出到文件的格式可以根据需求进行设定。一般可以使用文本文件格式,如txt文件、csv文件等。对于txt文件,可以使用File类进行文件的读写操作。例如,以下代码将排序结果写入txt文件:
FileWriter writer = new FileWriter("sortedStrings.txt");
for (String s : strArr) {
writer.write(s+"\n");
}
writer.close();
在C#中,可以使用StreamWriter类进行文本文件的写入。例如,以下代码将排序结果写入txt文件:
StreamWriter writer = new StreamWriter("sortedStrings.txt");
foreach (string s in strArr) {
writer.WriteLine(s);
}
writer.Close();
在Python中,可以使用open()函数进行文本文件的读写操作。例如,以下代码将排序结果写入txt文件:
with open("sortedStrings.txt", "w") as f:
for s in strList:
f.write(s+"\n")
在实际操作中,可能会遇到一些报错信息或者异常。这些信息可以根据具体情况进行调试。一些错误可能与排序算法或者文件操作有关,例如数组越界、无法打开文件等。在排除错误后,可以根据具体需求进行调整和优化。