我正在玩fgetc并且想知道如何让我的循环打印出行部分然后打印前16个字符.
这是我的代码:
int main(int argc, char * argv[])
{
FILE *fp;
if((fp = fopen(argv[1], "rb+")) == '\0')
{
perror("fopen");
return 0;
}
getchar(fp);
return 0;
}
void getchar(FILE *fp)
{
int c;
size_t linecount = 0;
while((c = fgetc(fp)) != EOF)
{
printf("line : ");
printf("%c ", c);
linecount++;
if(linecount == 16)
{
printf("\n");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想我的输出是这样的:
line: ? 5 d s d a d 0 0 0 0 0 0 0 0 0 0 0
line: a d s x c v d 0 0 0 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我尝试使用for for循环打印字符:
for(i = 0; i < 16; i++)
{
printf("%c ", c);
}
Run Code Online (Sandbox Code Playgroud)
但是这并没有得到其他角色,因为循环仍然集中在第一个角色上
首先,已经getchar()定义了一个标准函数<stdio.h>- 您必须更改函数的名称,否则您可能会遇到一些非常奇怪的行为.
其次,在我看来,你想要做的是:
"line: ";"\n".这将转换为代码形式:
printf("line : ");
while (linecount < 16 && (c = fgetc(fp)) != EOF)
{
printf("%c ", c);
linecount++;
}
printf("\n");
Run Code Online (Sandbox Code Playgroud)