例如这样:strcmp(p[i]->str,"ok");
error:suspicious pointer conversion
1楼的回复:p[i]已经是指向结构体的指针,就算用menber[i].str还是不行(menber是结构体变量)
,不行,我觉得是类型不同所导致的;
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main()
{
struct read
{
char str[50];//改了这里就没警告了,小问题啊,这几天做多了题就看不见了,呵呵,程序还是行直接出问题关掉了,我再看看,
}menber[50];
struct read *p[50];
FILE *fp;
int j,i=0;
clrscr();
if((fp=fopen("any.ini","r"))==NULL)
{
printf("cannot open this file.\n");
exit(0);
}
fread(&menber[0],sizeof(struct read),1,fp);//2楼在这里以及后一句的修改我不懂是什么用意
p[0]=&menber[0];
while(!!strcmp(p[i]->str,"ok"))//文件是以“ok”作为最后一个记录
{
fread(&menber[i],200,1,fp);//200我改为sizeof(struct read)了
p[++i]=&menber[i];
}
fclose(fp);
for(j=0;j<i+1;j++)
{
printf("%s ",p);
}
}
strcmp 参数一个是结构体变量中的字符串变量,另一个参数是常量
答案:3 悬赏:80 手机版
解决时间 2021-12-25 08:22
- 提问者网友:刺鸟
- 2021-12-24 21:38
最佳答案
- 五星知识达人网友:北方的南先生
- 2021-12-24 22:34
strcmp(s1,s2)是对字符串s1和s2进行比较,返回比较结果相等则返回0,s1>s2时返回正数,s1<s2时返回负数,楼主的这个异常应该是参数“p[i]->str”有问题,如果是结构体变量中的字符串变量,试试p[i].str看看吧。
补充:
s1和s2这两个参数应该用地址,不好意思,好久不用我也忘记了,问题可能出在“ok”,你试试看用一个变量b[2]=“ok”,然后strcmp(p[i]->str,b)试试看,如果p[i]->str不是地址的话也改为地址。
补充:
s1和s2这两个参数应该用地址,不好意思,好久不用我也忘记了,问题可能出在“ok”,你试试看用一个变量b[2]=“ok”,然后strcmp(p[i]->str,b)试试看,如果p[i]->str不是地址的话也改为地址。
全部回答
- 1楼网友:鸽屿
- 2021-12-25 01:18
如果 p[i]->str 是字符串的话,这条语句没问题,你最好能把p[i]的声明贴出来
============
先确定你的
struct read
{
str[50]; //是char str[50] ?? 是的话再往下看
}menber[50];
=================
if((fp=fopen("any.ini","r"))==NULL)
{
printf("cannot open this file.\n");
exit(0);
}
fread(member[0].str, 49, 1, fp); //修改这里
member[0].str = 0; //添加这句
p[0]=&menber[0];
while(!!strcmp(p[i]->str,"ok"))//文件是以“ok”作为最后一个记录
{
fread(&menber[i],200,1,fp);
p[++i]=&menber[i];
}
fclose(fp);
那还是程序其他地方有问题,你再看看
- 2楼网友:纵马山川剑自提
- 2021-12-25 00:11
strcmp(s1,s2)是对字符串s1和s2进行比较,返回比较结果相等则返回0,s1>s2时返回正数,s1str”有问题,如果是结构体变量中的字符串变量,试试p[i].str看看吧。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯