【发布时间】:2017-12-13 16:25:29
【问题描述】:
我想做的是读取文件的整个第一行,但在第一行之后只读取以下行,直到遇到空格。我的最终目标是通过添加/减去该行的时间来询问用户他们想要编辑哪一行。
示例文件
My test file
00:19.1 123456
00:35.4 testing whitespace end
期望的输出
1: My test file
2: 00:19.1
3: 00:35.4
代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fptr1, *fptr2;
char filechar[40];
char c[50];
int line_number = 1;
int replace_line, temp = 1;
printf("Please enter a file name: ");
scanf("%s", &filechar);
if ((fptr1 = fopen(filechar, "r")) == NULL)
{
printf("Error locating desired file");
exit(1);
}
c = getc(fptr1);
while (c != EOF)
{
//printf("%d: %c",line_number, c);
printf("%s",c);
c = getc(fptr1);
//line_number++;
}
return 0;
}
【问题讨论】:
-
你的编译器是否有
getline函数:en.cppreference.com/w/c/experimental/dynamic/getline -
在
scanf("%s", &filechar);中删除&—scanf()需要一个char *,而您传递的是一个不同类型的char (*)[50](尽管该值恰好与只是filechar这样你就可以侥幸逃脱了,有点)。 -
如果您知道第一行的最大长度,请使用
fgets。否则,看看gist.github.com/mrkline/99630570e839a4af0e3b
标签: c codeblocks