大家帮忙看下这个文件操作的程序,多谢
大家帮忙看下这个文件操作的程序,谢谢!
jgxx.txt内容为:
BEGIN
07|101|资金营运中心|
08|101|专业处理中心|
08|102|总行财务机构|
END
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Bank
{
char areaId[5];
char bankId[5];
char name[20];
}bank;
int main(int argc, char *argv[])
{
char str[50];
FILE *fp;
if((fp = fopen( "/gapstest/file/jgxx.txt ", "rt ")) == NULL)
{
printf( "open file error! ");
exit(1);
}
while(1)
{
if(fgets(str,sizeof(str),fp) != NULL)
{
/*字符串分割*/
char seperator[]= "| ";
char *token = NULL;
token = strtok(str,seperator);
if( token == "BEGIN " || token == "END " )
{
printf( "lsdjflsdfj ");
continue;
}
else
{
strcpy(bank.areaId,token);
printf( "%s\n ",bank.areaId);
token = strtok( NULL, seperator );
strcpy(bank.bankId,token);
printf( "%s\n ",bank.bankId);
token = strtok( NULL, seperator );
strcpy(bank.name,token);
printf( "%s\n ",bank.name);
}
}
else
{
break;
}
}
fclose(fp);
return 0;
}
为什么第一行的BEGIN和末尾的END,还是打印出来。第一行token == "BEGIN "怎么不为真呢?
------解决方案--------------------
"BEGIN "是个字符串常量,token是个指针,如果它们相等,那么说明token指向了“BEIGN”这个字符串的地址,你觉得能相等吗?
------解决方案--------------------
if( token == "BEGIN " || token == "END " )
=========
if( strcmp(token, "BEGIN ") == 0 || strcmp(token, "END ") == 0 )
字符串比较用strcmp,你写的那个是指针比较啦,而不是字符串比较
jgxx.txt内容为:
BEGIN
07|101|资金营运中心|
08|101|专业处理中心|
08|102|总行财务机构|
END
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Bank
{
char areaId[5];
char bankId[5];
char name[20];
}bank;
int main(int argc, char *argv[])
{
char str[50];
FILE *fp;
if((fp = fopen( "/gapstest/file/jgxx.txt ", "rt ")) == NULL)
{
printf( "open file error! ");
exit(1);
}
while(1)
{
if(fgets(str,sizeof(str),fp) != NULL)
{
/*字符串分割*/
char seperator[]= "| ";
char *token = NULL;
token = strtok(str,seperator);
if( token == "BEGIN " || token == "END " )
{
printf( "lsdjflsdfj ");
continue;
}
else
{
strcpy(bank.areaId,token);
printf( "%s\n ",bank.areaId);
token = strtok( NULL, seperator );
strcpy(bank.bankId,token);
printf( "%s\n ",bank.bankId);
token = strtok( NULL, seperator );
strcpy(bank.name,token);
printf( "%s\n ",bank.name);
}
}
else
{
break;
}
}
fclose(fp);
return 0;
}
为什么第一行的BEGIN和末尾的END,还是打印出来。第一行token == "BEGIN "怎么不为真呢?
------解决方案--------------------
"BEGIN "是个字符串常量,token是个指针,如果它们相等,那么说明token指向了“BEIGN”这个字符串的地址,你觉得能相等吗?
------解决方案--------------------
if( token == "BEGIN " || token == "END " )
=========
if( strcmp(token, "BEGIN ") == 0 || strcmp(token, "END ") == 0 )
字符串比较用strcmp,你写的那个是指针比较啦,而不是字符串比较