Tag: 文件

使用fscanf读取文件后的无限循环

我正在使用fscanf来读取输入 (2,3) (3,4) 从文件中,但每当我运行程序时它都会进入无限循环。 输入来自一个文件,例如abc.txt,它必须作为命令行参数传递。 代码如下 #include #include int main(int argc,char **argv){ int a,b; FILE *fp=fopen(argv[1],”r”); while(!feof(fp)){ fscanf(fp,”(%d,%d)”,&a,&b); printf(“\nThe values are :%d %d\n”,a,b); } fclose(fp); } 可能是什么问题?

如何获取文件的地址?

我想知道文件的地址。 我可以使用fopen()打开文件或打开然后我使用fp来读取内容但是可以通过地址获取内容,我知道我们正在从流而不是文件读取但是甚至是什么该流的起始地址。 我看到了FILE结构,那里有一个_base指针,我已经读过它的值但是它是0.我没有得到那个但是它是什么,它是流的基地址。 请告诉我这件事。 谢谢

是否可以在不将其加载到内存的情况下读取文件?

我想读取一个文件,但它太大了,无法将其完全加载到内存中。 有没有办法读取它而不将其加载到内存中? 还是有更好的解决方案?

使用C Readline从文件而不是stdin读取一行

我正在使用gcc -lreadline的readline来读取stdin。 后来,我想从一个文件中读取,所以我尝试了以下内容,但它仍然暂停并接受来自命令提示符的输入,而不是从文件中接受它。 这种方法有解决方法吗? FILE* savedStdin = stdin; stdin = fopen(“someFile.txt”, “r”); char* input = readline(NULL); stdin = savedStdin;

将项添加到c中最后一行之前的文件中

当新项目添加到文件时,页脚应使用当前时间和小时进行更新。 这是示例文件格式, ITEM1 ITEM2 06/07/2010 10:20:22 //页脚线 “item”必须在页脚行之前附加到现有文件中,并且应使用新值更新页脚。 我需要变量,“item”和“time”将各自的值保存为字符串。 添加新项目(ITEM3)后文件看起来像, ITEM1 ITEM2 ITEM3 07/07/2010 17:20:12 //改变了页脚 帮助我实现这个目标。

C中的fscanf csv未分配值

我试图创建一个文件来读取包含CSV的文本文件。 但是出于某种原因,一些Fscanfs不会返回值,但有些值会返回。 FILE* reader; char OptionOne[30]=””; char OptionTwo[30]=””; char OptionThree[30]=””; char OptionFour[30]=””; char answer[1]=””; char CorrectAnswer[1]; char Question[51]; reader = fopen(“C:\\Users\\Finley\\Desktop\\Programming\\QuizMachine\\QuizMachine\\fscanf_questions.txt”, “r”); if (reader == NULL) { printf(“Unable to Open File: %s\n”, FileName); } fscanf(reader, “%[^,],”, Question); fscanf(reader, “%[^,],”, OptionOne); fscanf(reader, “%[^,],”, OptionTwo); fscanf(reader, “%[^,],”, OptionThree); fscanf(reader, “%[^,],”, OptionFour); fscanf(reader, “%[^,],”, answer); 为什么第一个fscanf返回一个值,但所有其他值都没有返回值。 我看不到任何东西,它们看起来都是一样的同样的格式文件格式是这样的: 你用什么函数打开文件?,fscanf,fclose,fopen,main,3 […]

从文本文件中读取一行,并在struct中放置由空格分隔的数据

我要在C中编写一个函数,它将filepointer作为输入并返回如下结构: typedef struct product{ char * code_product; char * name; char * code_piece; only_time_t enter; only_time_t exit; }product_t; 这个结构使用另一个这样的结构: typedef struct only_time{ int hour; int minute; int second; }only_time_t; 为了从文件中读取,我使用了getline()函数,我使用strtok()函数来创建令牌。 这是我用来从文件中读取的函数: product_t * read_line(FILE * fp){ char * line = NULL; size_t len = 0; product_t * temp; int i = 0; temp = (product_t […]

如何在读取所有字母之前确定fgets是否停止?

我做这样的事情: char buf[100]; int n = 0; char save[100][100]; while (fgets(buf,100, file)!=NULL) { strcpy(save[n], buf); printf(“%s”,buf); n++; } 我之前打开了一个带有error handling的FILE = *file 。 我只想读取小于或等于100个字符的行。 那些具有更多字符的,我想忽略并向“save”数组或perror或stout流写一些特殊的消息。 但是,我怎么可能知道我是否只有100个字符,或者我的fgets是否只是停止读取它的极限? 我怎么知道我首先是否超过100?

数据分别读取fscanf

我正在尝试从文件中读取数字。 该文件具有以下格式: 2 4 5 7 3 2 4 7 我尝试使用fscanf来收集到换行符的所有数字并将数字存储在数组中,并将数字存储在第二行。 但直接从第二行继续不再启动并将其存储在另一个数组中。 是否可以使用fscanf执行此操作? int main(void) { FILE* fp; int *vec = malloc(sizeof(int)*6); int *vec_2 = malloc(sizeof(int)*6); int row, i; fp = fopen(“vector.txt”,”r”); for(i = 0; i < row; i++) //I don't know how to read until newline fscanf(fp, "%d", &vec[k]); //here store the first row […]

如何在c中获取文件长度?

我只是有一个关于如何获取包含hex数字的文件长度的快速问题。 例如: 724627916C 我能想到的唯一方法是将hex值转换为二进制: 724627916C => 0111001001000110001001111001000101101100 然后计算二进制值的位数。 只是想知道这是否正确? 谢谢