
求解C++问题!!急求!!!编写程序统计某文中出现 if while for 单词的次数
1个回答
展开全部
#include <stdio.h>
#define STR_IF "if"
#define STR_WHILE "while"
#define STR_FOR "for"
int main(int argc, char* argv[])
{
HANDLE hOpenfile = NULL;
char cstr[256];
DWORD dwReadSize = 0;
BOOL bRet = false;
long if_num = 0;
long while_num = 0;
long for_num = 0;
memset(cstr,0x00,sizeof(cstr));
hOpenfile = CreateFile("1.txt",GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (!hOpenfile){
printf("文件打开失败!");
return 0;
}
bRet =::ReadFile(hOpenfile,cstr,sizeof(cstr),&dwReadSize,NULL);
if (!bRet){
printf("文件读取失败!");
return 0;
}
char* p = NULL;
p = _tcstok(cstr," ");
do {
if (strcmp(p,STR_IF) == 0){
if_num ++;
}
else if (strcmp(p,STR_WHILE) == 0) {
while_num++;
}
else if (strcmp(p,STR_FOR) == 0){
for_num++;
}
else{
// do nothing
}
p = _tcstok(NULL," ");
} while (p);
printf(" for单词的个数为:%d\n while单词的个数为:%d\n if单词的个数为:%d\n",for_num,while_num,if_num);
return 0;
}
说一下,因为txt中每个单词都是用" "(空格)区分的,所以程序中使用了 p = _tcstok(cstr," ");来查找每个单词,当然如果你喜欢使用","来区分,那么要在_tcstok函数的第二个参数换成","即可。
以上,有问题请追问。
#define STR_IF "if"
#define STR_WHILE "while"
#define STR_FOR "for"
int main(int argc, char* argv[])
{
HANDLE hOpenfile = NULL;
char cstr[256];
DWORD dwReadSize = 0;
BOOL bRet = false;
long if_num = 0;
long while_num = 0;
long for_num = 0;
memset(cstr,0x00,sizeof(cstr));
hOpenfile = CreateFile("1.txt",GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (!hOpenfile){
printf("文件打开失败!");
return 0;
}
bRet =::ReadFile(hOpenfile,cstr,sizeof(cstr),&dwReadSize,NULL);
if (!bRet){
printf("文件读取失败!");
return 0;
}
char* p = NULL;
p = _tcstok(cstr," ");
do {
if (strcmp(p,STR_IF) == 0){
if_num ++;
}
else if (strcmp(p,STR_WHILE) == 0) {
while_num++;
}
else if (strcmp(p,STR_FOR) == 0){
for_num++;
}
else{
// do nothing
}
p = _tcstok(NULL," ");
} while (p);
printf(" for单词的个数为:%d\n while单词的个数为:%d\n if单词的个数为:%d\n",for_num,while_num,if_num);
return 0;
}
说一下,因为txt中每个单词都是用" "(空格)区分的,所以程序中使用了 p = _tcstok(cstr," ");来查找每个单词,当然如果你喜欢使用","来区分,那么要在_tcstok函数的第二个参数换成","即可。
以上,有问题请追问。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询