gpt4 book ai didi

c - Euler 22/按字母顺序对名称进行排序

转载 作者:行者123 更新时间:2023-11-30 17:28:46 24 4
gpt4 key购买 nike

我一直在尝试对 Euler #22 问题中的这些名称进行排序。我尝试了很多方法来交换字符串。我每次都有问题。有些是随机的符号;有些是随机的。在其他情况下,我在交换时出现了溢出(?)的名字(就像在尝试交换 PATRICIA 和 LINDA 时最终得到了 LINDACIA 一样)。我尝试在字符串中的每个空闲字节中添加一个符号(例如 LINDAzzzzzzzzzz\0),但出现编译器错误。

输入文件

"MARY","PATRICIA","LINDA","BARBARA","ELIZABETH","JENNIFER","MARIA","SUSAN","MARGARET"

源代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
char *nameorder;
char liste[5164][15];
char hold[15];
int i=0,j=0,k;
int c;
FILE *ptr;
nameorder ="names.txt";
ptr= fopen( nameorder , "r");
if(ptr==0)
{
printf("File could not be opened");
return 0;
}
while( (c=getc(ptr)) != EOF) //reading character by character
{
if(c=='"')
{
continue;
}
if(c==',')
{
j=0;
i++;
continue;
}
liste[i][j]=c;
j++;
}
fclose(ptr);
for(k=0;k<5163;k++)
{
for(i=0;i<5164;i++) //
{
if( strcmp(liste[i],liste[i+1])>0 )
{
strncpy(hold,liste[i],15);
strncpy(liste[i],liste[i+1],15);
strncpy(liste[i+1],hold,15);
}
else
continue;
}
}

最佳答案

至少,您不会以 null 终止字符串。这对于所有长度不完全是 15 个字符的名称都很重要。

解决此问题的最简单方法是将整个数组初始化为零。

char liste[5164][15] = {{0}};

关于c - Euler 22/按字母顺序对名称进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25954290/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com