要求:从文件中分别查找大写字母,小写字母以及数字的个数。
代码:
#include int main(void)
{
char str[50][20];
int i, j, num = 0;
int sum_cap = 0;
int sum_low = 0;
int sum_dig = 0;
int len = 0;
FILE *fp;
fp = fopen("C:\\Users\\Administator\\Desktop\\dictionary.txt", "r");
while(!feof(fp))
{
fscanf(fp, "%s", &str[num]);
num++;
}
fclose(fp);
for(i = 0; i < num; i++)
{
for(j = 0; j < 20; j++)
{
if(str[i][j] == '\0')break;
if(str[i][j] >= 'A' && str[i][j] <= 'Z')
sum_cap++;
if(str[i][j] >= 'a' && str[i][j] <= 'z')
sum_low++;
if(str[i][j] >= '0' && str[i][j] <= '9')
sum_dig++;
}
}
printf("sum_cap = %d, sum_low = %d, sum_dig = %d\n", sum_cap, sum_low, sum_dig);
return 0;
}
说明:
在循环读取文件代码部分:一开始想的是一个字符一个字符的读取,这样直接存放在一个一维数组里就行了,而且查找起来也方便。
char str[50];
while(!feof(fp))
{
fscanf(fp, "%c", &str[num]);
num++;
}
但是发现这样做之后,能编译通过但调试窗口会崩溃。仔细想一想,觉得问题一应该出在文件指针这,因为fscanf()函数每次会读到结束符处,但如果是几个字符之间没有结束符,那文件读到此处时,由于只要读取一个字符,但又没遇到结束符,导致程序崩溃。所以。。。但实际原因也暂时没找到验证方法。希望知道的能告诉我下具体原因,谢谢。
博客内容很简单,在给自己做下笔记的同时也希望能帮助到需要帮助的人。