所以我试图逐个字符地从文件中读取数组。这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE * fp;
char abc[255];
int i = 0;
fp = fopen ("source.c", "r");
while(fgetc(fp) != EOF)
{
fputc(abc[i], FILE *fp );
printf("%c", abc[i]);
i++;
}
fclose(fp);
return(0);
}
我收到了一个错误:
main.c: In function 'main':
main.c:19:19: error: expected expression before 'FILE'
fputc(abc[i], FILE *fp );
这个错误是什么意思?有什么问题,我该如何解决?
答案 0 :(得分:2)
错误与fputc()
的错误使用有关。第二个参数是流。
但在您的情况下,您不需要拨打fputc()
,因为您也使用了printf()。
你还有另外一个问题。你根本不存储从文件中读取的字符。做类似的事情:
int in;
while((in=fgetc(fp)) != EOF)
{
in = abc[i];
printf("%c", abc[i]);
i++;
}
一些一般性意见:
fopen()
失败怎么办? source.c
有更多字符怎么办? 答案 1 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE * fp;
char abc[255];
int i = 0;
fp = fopen ("source.c", "r");
// we need to make sure that we can fit
// into buffer - that's why we check whether i < 255
while(i<255 && (abc[i] = fgetc(fp)) != EOF)
{
printf("%c", abc[i]);
i++;
}
// if we are way before end of the buffer
// we should think about terminating string
if(i<254)
abc[i] = '\0';
else
// otherwise, we have to make sure that last character
// in buffer is zero
abc[254] = '\0';
printf("%s", abc);
fclose(fp);
return(0);
}