大一C语言考试题 求助 有会编写的大神么
1.有一固定格式的字符串”+IPD,ID号,7:L-2-$ ”(双引号以内的为固定格式的字符串)。字符串1 ”DQF124+IPD,0,7:L-2-$1234”
字符串2 ”He!#+IPD,3,7:L-2-$071231fg”
字符串3 ” Wo2019107$+IPD,5,7:L-2-$420”
请写一个函数,要求输入上述3个字符串都可以找到每个字符串里对应的ID号是多少。
{:10_277:} #include <stdio.h>
#include <string.h>
int id(const char * s)
{
int d , k ;
for(d = 0 ; d < strlen(s) && s != ',' ; d ++) ;
sscanf(& s , "%d" , & k) ;
return k ;
}
int main(void)
{
char s ;
for(;;) {
printf("\n") ;
printf("Input string : ") ;
fgets(s , 256 , stdin) ;
s = '\0' ;
if(strlen(s)) printf("the id = %d\n" , id(s)) ;
else break ;
}
printf("\n\n") ;
}
jackz007 发表于 2019-10-17 16:54
谢谢 但是好难看不懂 本帖最后由 jackz007 于 2019-10-17 17:23 编辑
BadWomen 发表于 2019-10-17 17:15
谢谢 但是好难看不懂
只要抓住要点,一切都很简单,就像我的代码。
ID 是一个整型数,紧挨在字符串第一个逗号之后出现,于是,先定位到这个逗号,然后,从它的后面位置开始,用 sscanf() 函数从字符串中读取一个整型数,它就是我们需要的 ID。 jackz007 发表于 2019-10-17 16:54
大佬 请问有没有方法能把 输入的DQF124+IPD,0,7:L-2-$1234字符中 含有+IPD 7:L-2-$的来个字符去掉 我想知道这种方法 BadWomen 发表于 2019-10-17 17:22
大佬 请问有没有方法能把 输入的DQF124+IPD,0,7:L-2-$1234字符中 含有+IPD 7:L-2-$的来个字符去掉 我想知 ...
听不懂你的表述,请用实例讲解一下。 BadWomen 发表于 2019-10-17 17:22
大佬 请问有没有方法能把 输入的DQF124+IPD,0,7:L-2-$1234字符中 含有+IPD 7:L-2-$的来个字符去掉 我想知 ...
好像明白了,你的意思是字符串只留下 id 把其他成份统统滤除? jackz007 发表于 2019-10-17 17:28
好像明白了,你的意思是字符串只留下 id 把其他成份统统滤除?
对的 在这串字符中 找到没带+IPD7:L-2-$的字符 也就是ID所表达的字符 本帖最后由 jackz007 于 2019-10-17 17:43 编辑
BadWomen 发表于 2019-10-17 17:31
对的 在这串字符中 找到没带+IPD7:L-2-$的字符 也就是ID所表达的字符
#include <stdio.h>
#include <string.h>
char * filter(char * s)
{
int d , k , m ;
for(d = 0 ; d < strlen(s) && s != ',' ; d ++) ;
for(m = d + 1 ; m < strlen(s) && s != ',' ; m ++) ;
for(k = d + 1 ; k < m ; k ++) s = s;
s = '\0' ;
return s ;
}
int main(void)
{
char s ;
for(;;) {
printf("\n") ;
printf("Input string : ") ;
fgets(s , 256 , stdin) ;
s = '\0' ;
if(strlen(s)) printf("the id = %s\n" , filter(s)) ;
else break ;
}
printf("\n\n") ;
}
你感觉和前面那个方案又有什么区别? jackz007 发表于 2019-10-17 17:41
你感觉和前面那个方案又有什么区别?
两个都可以 只是我看不懂而已 我只是想知道一个简单的代码而已 BadWomen 发表于 2019-10-17 18:45
两个都可以 只是我看不懂而已 我只是想知道一个简单的代码而已
难道我写的代码不够简单?你心目中的 “简单” 代码应该长什么样? jackz007 发表于 2019-10-17 20:54
难道我写的代码不够简单?你心目中的 “简单” 代码应该长什么样?
#include <stdio.h>
int main() {
int a;
printf("INPUT:");
char raw , id;
scanf("%s" , raw);
for (a = 0; raw !='\0';a++) {
if (raw==','&&raw !='\0' && raw==',') {
id = raw;
printf("ID: %c\n", id);
break;
}
}
return 0;
} jackz007 发表于 2019-10-17 17:41
你感觉和前面那个方案又有什么区别?
你的代码怎样实现的分号统一右对齐,是用的插件吗?
海-啵啵鱼 发表于 2019-10-18 17:41
你的代码怎样实现的分号统一右对齐,是用的插件吗?
纯人工,没办法,强迫症!
页:
[1]