gpt4 book ai didi

c - 如何在不使用库函数的情况下将文件中的字符串转换为C中的int?

转载 作者:行者123 更新时间:2023-11-30 16:56:15 27 4
gpt4 key购买 nike

我正在尝试打开一个包含多行数字的文件,然后将其从字符串转换为整数。

我想在不使用任何库函数的情况下完成此操作,因此不需要 atoi、strtol 或 strtoul。

这就是我的代码:

#include <stdio.h>
#include <stdlib.h> /* required for atoi. */
int main(void) {
int i, len;
int result=0;
double numbers;
char num[20]; /* declares a char array. */

FILE *file; /* declare a file pointer. */
file = fopen("test22.txt", "r"); /* opens the text file for reading only, not writing. */

while(fgets(num, 100, file)!=NULL) { /* this while loop makes it so that it will continue looping until the value is null, which is the very end. */
len=strlen(num);
for(i=0; i<len; i++) {
result = result*10 + ( num[i] - '0' );
}
printf("%d\n", result);
}
fclose(file); /* closes the file */
return 0;
}

现在它返回文本文件中不存在的数字。

如有任何帮助,我们将不胜感激!谢谢!

最佳答案

您不会在每个新行中将结果重置为零,因此它只会不断累积。改变

while(fgets(num, 100, file)!=NULL) { 
len=strlen(num);
for(i=0; i<len; i++) {
result = result*10 + ( num[i] - '0' );
}
printf("%d\n", result);
}

while(fgets(num, 100, file)!=NULL) {
result = 0;
len=strlen(num);
// account for newline - should really be smarter than this.
// I'll leave that as an exercise for the reader... ;)
for(i=0; i< (len - 1); i++) {
result = result*10 + ( num[i] - '0' );
}
printf("%d\n", result);
}

关于c - 如何在不使用库函数的情况下将文件中的字符串转换为C中的int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39963213/

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