我想将 .txt 文件解析为 C 中的一维数组。我使用 fgets 函数将文件的内容读入数组(“waveform”作为文件内容要写入的数组)存储 - 定义为“char”)。保存的值需要作为整数值保存到新数组中。我不确定我哪里出错了。 P.S:我是 C 编程新手,请耐心等待:) 请忽略因粘贴而导致的索引问题
int main(){
int a, win[10];
FILE *filename = fopen("testFile.txt","r");
char waveform[10];
if (filename == NULL)
{
printf("Error opening file.\n");
exit(8);
}
for(int i =0;1;i++){
if(fgets(waveform[i], 10, filename) == NULL);
break;
if(i < 10)
{
a = atoi(waveform[i]);
win[i] = a;
}
}
fclose(filename);
return 0;
}
Compiler errors - image embedded
testFile.txt中的数据: 行 vector 中的 1 到 10。
最佳答案
您走在正确的道路上。这是我对该主题的贡献:
- 打开文件 (
fopen
) - 计算行数(
getc
和rewind
) - 将所有行读入数组 (
getline
) - 释放内存并关闭文件(
free
和fclose
)
代码示例:
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
// Open File
const char fname[] = "testFile.txt";
FILE *fp = fopen(fname, "r");
if( !fp )
goto error_open_file;
printf("Opened file: %s\n", fname);
// Count Lines
char cr;
size_t lines = 0;
while( cr != EOF ) {
if ( cr == '\n' ) {
lines++;
}
cr = getc(fp);
}
printf("Number of lines: %ld\n", lines);
rewind(fp);
// Read data
{// 'goto' + data[lines] causes error, introduce block as a workaround
char *data[lines];
size_t n;
for (size_t i = 0; i < lines; i++) {
data[i] = NULL;
size_t n = 0;
getline(&data[i], &n, fp);
if ( ferror( fp ) )
goto error_read_file;
}
for (size_t i = 0; i < lines; i++) {
printf("%s", data[i]);
free(data[i]);
}
}
// Close File
fclose(fp);
return 0;
error_read_file:
perror("fopen ");
return 1;
error_open_file:
perror("getline ");
return 2;
}
关于c - 在C中将文本文件读取到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58008702/