gpt4 book ai didi

c - 数组中的数字不从文件中的第一个数字开始显示

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

txt 文件包含从 2148 到 9269 的 10000 个元素,但是将它们存储在数组中并显示元素后,不会打印从头开始的元素。尽管最后一个元素完美显示。

我尝试在网上搜索但无法找到确切的解决方案。我也尝试过Python中的代码。将元素存储在列表中后,如果显示整个列表输出是完美的,但如果我将它们从字符串转换为整数,然后一一打印,则会出现相同的问题。

int main() {
FILE *fp;
int i,j=0,a[10000];
long long int c=0;
char str[MAXCHAR]; //MAXCHAR is defined as 10
char filename[80] = "C:\\Users\\Akshat\\Desktop\\codes\\C\\QuickSort.txt";

fp = fopen(filename, "r");
if (fp == NULL){
printf("Could not open file %s",filename);
return 1;
}
while(fgets(str, MAXCHAR, fp)!=NULL)
{
int len=strlen(str);
int num=0;
for(i=1;i<len;i++)
num+=(str[len-(i+1)]-'0')*pow(10,i);
a[j]=num/10;
j++;
}
fclose(fp);
for(i=0;i<10000;i++)
printf("%d\n",a[i]);
return 0;
}

如果我在循环内打印 str,也会发生同样的情况。第一个元素显示在介于两者之间的位置。此外,打印时的元素总数会打印 10000,这是正确的。

这是文件的链接 - https://d3c33hcgiwev3.cloudfront.net/_32387ba40b36359a38625cbb397eee65_QuickSort.txt?Expires=1546473600&Signature=Tapm7qDg-hFcSkGtF6~zP5uDxoVK3cr4p-vePsnONjcd46aCAS9BZQGAry3gBmAd0upm3WbFJSosVdl1Owj~AY8bhlKvNbyiOMg9oYdko0ax4-PKRtP0NjyXa-Q35equ7YQmp3W4r3RAYb9hO-bQnpX1Q-JNIntYvV3rk4GUmdc_&Key-Pair-Id=APKAJLTNE6QMUY6HBC5A

最佳答案

我使用了您文件的一小部分,它对我来说工作得很好。我认为您正在将元素数量存储在变量 j 中,您应该使用它,而不是在打印循环中使用固定数量 10000

#include<stdio.h>
#include<math.h>
#include<string.h>
int main() {
const int MAXCHAR=10;
FILE *fp;
int i,j=0,a[10000];
long long int c=0;
char str[MAXCHAR]; //MAXCHAR is defined as 10
char filename[80] = "test.txt";

fp = fopen(filename, "r");
if (fp == NULL){
printf("Could not open file %s",filename);
return 1;
}
while(fgets(str, MAXCHAR, fp)!=NULL)
{
int len=strlen(str);
int num=0;
printf("%s",str);
for(i=1;i<len;i++)
num+=(str[len-(i+1)]-'0')*pow(10,i);
a[j]=num/10;
j++;
}
printf("STARTING THE ARRAY PRINT\n");
for(i=0;i<j;i++)
printf("%d\n",a[i]);
return 0;
}

To compile

gcc -o cque cque.c -lm

output
2148
9058
7742
3153
6324
609
7628
5469
7017
504
4092
1582
9572
1542
5697
2081
4218
3130
7923
9595
6558
3859
9832
3062
6788
7578
7432
479
8439
9079
7173
2667
2770
2655
972
4264
2014
3171
STARTING THE ARRAY PRINT
2148
9058
7742
3153
6324
609
7628
5469
7017
504
4092
1582
9572
1542
5697
2081
4218
3130
7923
9595
6558
3859
9832
3062
6788
7578
7432
479
8439
9079
7173
2667
2770
2655
972
4264
2014
3171

关于c - 数组中的数字不从文件中的第一个数字开始显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53998556/

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