为了账号安全,请及时绑定邮箱和手机立即绑定

请高手帮忙看看,我的程序问题出在哪里了,谢谢!!!

请高手帮忙看看,我的程序问题出在哪里了,谢谢!!!

C Go
慕后森 2022-09-16 12:11:37

#include<stdlib.h>
#include<stdio.h>
/*是这样的,我用atoi函数总是得不到数据,很郁闷。。。*/
/*输入:任意字符(*除外),再空格,紧接着继续输入一系列
数字,数字之间为一个空格,回车结束本次输入,
若输入*则停止输入。*/
/*输出:想要处理的字符串,用atoi函数处理后得到的数据。*/
typedef struct test
{ char str[80];
int data[80];
}TEST;
main()
{
int i=0,j=0,k=0,m,*q;
char ch;
TEST member[80];
/*这个while用来判断是否输入结束*/
while((ch=getchar())!='*')
{
gets(member[i].str);
i++;j++;
}
/*这个for用来通过atoi得到数据,问题出在这里。。。*/
for(i=0;i<=j;i++)
{ k=0;
q=member[i].str+1;
member[i].data[k]=atoi(q);
here:while(*q!=' '&&*q!='\0')
q++;
q++;
k++;
if(*(q-1)!='\0')
{
member[j].data[k]=atoi(q);
goto here;
}
}
/*这是输出部分*/
for(k=0;k<j;k++)
{
printf("***********************************************************\n");
printf("No.%d string is :",k+1);
puts(member[k].str);
printf("The began three numbers in No.%d string are :",k+1);
for(m=0;m<3;m++)
printf("%3d",member[k].data[m]);
printf("\n");
printf("***********************************************************\n");
printf("\n");
}
printf("Press any key to get back...\n");
getch();
}

查看完整描述

2 回答

?
qq_笑_17

TA贡献1499条经验 获得超7个赞

你把main中的int *q改成char *q

#include<stdlib.h>
#include<stdio.h>
/*是这样的,我用atoi函数总是得不到数据,很郁闷。。。*/
/*输入:任意字符(*除外),再空格,紧接着继续输入一系列
数字,数字之间为一个空格,回车结束本次输入,
若输入*则停止输入。*/
/*输出:想要处理的字符串,用atoi函数处理后得到的数据。*/
typedef struct test
{ char str[80];
int data[80];
}TEST;
int main()
{
int i=0,j=0,k=0,m;
char *q;
char ch;
TEST member[80];
/*这个while用来判断是否输入结束*/
while((ch=getchar())!='*')
{
gets(member[i].str);
i++;j++;
}
/*这个for用来通过atoi得到数据,问题出在这里。。。*/
for(i=0;i<=j;i++)
{ k=0;
q=member[i].str+1;
member[i].data[k]=atoi(q);
here:while(*q!=' '&&*q!='\0')
q++;
q++;
k++;
if(*(q-1)!='\0')
{
member[i].data[k]=atoi(q);
goto here;
}
}
/*这是输出部分*/
for(k=0;k<j;k++)
{
printf("***********************************************************\n");
printf("No.%d string is :",k+1);
puts(member[k].str);
printf("The began three numbers in No.%d string are :",k+1);
for(m=0;m<3;m++)
printf("%3d ",member[k].data[m]);
printf("\n");
printf("***********************************************************\n");
printf("\n");
}
printf("Press any key to get back...\n");
}


查看完整回答
反对 回复 2022-09-21
?
潇潇雨雨

TA贡献1521条经验 获得超3个赞

atoi C语言库函数名: atoi
功 能: 把字符串转换成整型数
函数说明: atoi()会扫描参数nptr字符串,检测到第一个数字或正负符号时开始做类型转换,之后检测到非数字或结束符 \0 时停止转换,返回整型数。
原型: int atoi(const char *nptr);
你传的 参数是 int 型的
还有
member[i].str+1;
字符串 加 整型 怎么加 ?????


查看完整回答
反对 回复 2022-09-21

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信