fclose问题和getc问题
#include <stdio.h>#include <stdlib.h>
#include <string.h>
#define LEN 30
int main(int argc, char *argv[])
{
char str1;
FILE *fp1,*fp2;
int ch1,ch2;
int i;
long count = 0;
if (argv < 2)
{
printf("Usage:%s character filname.\n", argv);
exit(EXIT_FAILURE);
}
if (argc < 3)
{
printf("Enter the filename:");
gets(str1);
if ((fp1 = fopen(str1, "r")) == NULL)
{
printf("Cant open the %s file.\n", str1);
exit(EXIT_FAILURE);
}
while ((ch1 = getc(fp1)) != EOF)
{
putchar(ch1);
if (*argv == ch1)
count++;
}
if (fclose(fp1) == NULL)
printf("Can't close the %s file.\n", str1);
printf("Ther are %ld %s in %s file.\n ", count, argv, str1);
}
else
{
for (i = 2; i <= argc -1; i++)
{
count = 0;
if ((fp2 = fopen(argv, "r")) == NULL)
{
printf("Can't open the %s file.\n", argv);
exit(EXIT_FAILURE);
}
while ((ch2 = getc(fp2) != EOF))
{
putchar(ch2);
if (*argv == ch2)
count++;
}
printf("Ther are %ld %s in %s file.\n ", count, argv, argv);
if (fclose(fp2) == NULL)
printf("Can't close the %s file.\n", argv);
}
}
getchar();
return 0;
}
为什么最后一个while循环打印出来的字符都是空白字符,还有为什么我的fclose都关闭不了文件 本帖最后由 jackz007 于 2019-7-19 02:37 编辑
C 语言读取文件的函数是 fgetc(),不是 getc(),还有,函数 gets() 取得的字符串最后一个字符是回车符'\n',应该用 '\0' 替换、覆盖这个字符,否则,很可能会因为多出的回车符而导致文件名错误,从而妨碍文件的正常打开。
s = gets() ;
s = '\0' ; jackz007 发表于 2019-7-19 02:31
C 语言读取文件的函数是 fgetc(),不是 getc(),还有,函数 gets() 取得的字符串最后一个字符是回车 ...
我前面的交互式都可以使用,但是在命令行在就会读取的字符是空白字符
页:
[1]