gpt4 book ai didi

c - 将文本文件中的整数放入 C 中的 int 数组

转载 作者:太空宇宙 更新时间:2023-11-04 07:20:06 24 4
gpt4 key购买 nike

我正在阅读一个包含以下内容的文本文件:

2, 0, 15, 14, 24, 6, 19, 9, 25, 13, 7, 5, 21, 10, 12, 11, 4, 22, 23, 20, 17, 8, 18, 3, 1, 16

我想将每个单独的元素放入一个 int 数组中,然后打印该数组。我下面的代码给我一个段错误,但我无法解决这个问题。任何帮助都会很棒。

FILE *the_cipher_file;
the_cipher_file = fopen("cipher.txt", "r");
int * the_alphabet_array;
int size_of_alphabet;
int the_letter_counter = 0;

while(fscanf(the_cipher_file, "%d", &size_of_alphabet) > 0){
the_alphabet_array[the_letter_counter] = size_of_alphabet;
the_letter_counter++;
printf("%d", size_of_alphabet);
}

最佳答案

这是我以前写的一个简单的程序,它很粗糙,但应该是你要找的,同时注意检查*fp为空。

我测试过你的数据工作正常(只读取数字并跳过空格和逗号)。

2, 0, 15, 14, 24, 6, 19, 9, 25, 13, 7, 5, 21, 10, 12, 11, 4, 22, 23, 20, 17, 8, 18, 3, 1, 16    

#include <stdio.h>
int main(int argc, char *argv[]){

FILE *fp = fopen(argv[1],"r");
int array[100];
int size_of_alphabet =0;
int i =0;
while (fscanf(fp," %d%*[,] ",&size_of_alphabet)>0 && i<100) {
array[i] = size_of_alphabet;
printf("%d\n", size_of_alphabet);
i++;

}
}

输入是argv[1],所以用./a.out file_name.txt运行程序

*表示丢弃读取的内容,不要将其存储在输出变量中,因此在这种情况下它将丢弃逗号,[ 的详细信息可以在 scanf 或 fscanf 手册中找到。大多数以“f”(打印格式化内容)结尾的函数,如 scanf 和 fscanf 都有相似的手册页。

使用 scanf 和 skipp 东西 - http://classes.soe.ucsc.edu/cmps012a/Fall98/faq/scanfQ.html

fsacnf 手册页 http://www.manpagez.com/man/3/fscanf/

有关扫描功能的有用信息。(注意缓冲区溢出)

scanf("%[^,]",array); // it expects characters(string) that don't contain commas,
// commas will be skipped.

只读一个逗号会这样

scanf("%[,]",array); only commas will be read as a string

跳过逗号将如下所示。

scanf("%d%*[,]",array); this one skips the comma if its after the number.

关于c - 将文本文件中的整数放入 C 中的 int 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22108979/

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