我在c中练习,它要求获得两个参数(文件名,数字,例如k> 0)。 之后,它将创建一个新文件,将获得位置k,2 * k,3 * k等字母,并将其写入新文件。 它还将创建另一个文件来编写如上所述的行。例如第k行,第2行*等等。
我的第一次接触是这个,但我不知道将指针*作为数字(k):
#include <stdio.h>
int main()
{
FILE * file;
char c;
int k;
printf("Give a number :\n");
scanf("%d" , k);
file = fopen("file.txt","r");
if (file == NULL)
printf("File doesn't exist\n");
else
{
do
{
c = getc(file);
putchar(c);
}
while (c != EOF);
}
fclose(file);
return 0;
}
提前致谢。
答案 0 :(得分:0)
有很多问题:
将scanf("%d" , k);
更改为scanf("%d" , &k);
将char c;
更改为int c;
,因为getc
和putchar
使用int
。
这是错误的:
do
{
c = getc(file);
putchar(c);
}
while (c != EOF);
如果c
为EOF
,则您不应致电putcar
。
您检查(file == NULL)
,但是您不应该致电fclose
。仅在fclose
成功时才致电fopen
。