- 论坛徽章:
- 0
|
一段错误代码:从文件中读取内容,然后和另一个字符串相比较。
原帖由 "testtt" 发表:
还是不行
还是
test1
10
呵呵,sizeof(status)测出的不是文件的长度,而是你的数组结构的长度,status[10]测出来当然是10,你不信改为status[12],测出来肯定是12。测读到的文件长度应该用strlen(status).下面是我的实验及结果。我是在unix下测的,所以程序改为用c.
--home/test文件内容:
test1
--程序
- #include<stdio.h>;
- #include<unistd.h>;
- #include<sys/types.h>;
- #include<sys/stat.h>;
- #include<fcntl.h>;
- int main()
- {
- int fd,n,m,m1;
- char status[10]="";
- char status1[12];//测试
- if ((fd=open("home/test",O_RDONLY))!=-1) {
- n=read(fd,status,10); //n是实际读到的字节数
- status[n]=0;
- close(fd);
- if (!strcmp(status,"test1") ){
- printf("test1\n");
- //cout<<"test1"<<endl;
- }else if (!strcmp(status,"test2") ) {
- printf("test2\n");
- //cout<<"test2"<<endl;
- }
- }
- printf("n=%d\n",strlen(status));//这是读到文件的字节数
- printf("m=%d\n",sizeof(status));//这是你的数组的长度,当然为10
- printf("m1=%d\n",sizeof(status1));这里的输出结果应该为12
- //cout<<"n="<<strlen(status)<<endl;//
- exit(0);
- }
复制代码
--输出结果:
openlab.tarena.ca% ./a.out
test1
n=5
m=10
m1=12
[/code] |
|