紫苑天星 发表于 2021-10-26 21:49:17

求大佬帮一下萌新

#include<stdio.h>

int main()

{
       
char s;

int v;

int i=0;

while(1)

{
       
s=getchar();

if(s==',')

{
       
s='\0';

break;

}

i++;

}

scanf("%d\n",&v);

printf("%d\n",v);

return 0;

}
想请问一下大佬,这串代码的原理和后面那个scanf是发挥什么作用的

大马强 发表于 2021-10-26 22:24:48

你这代码感觉一点意义都没有
你前面是给char s赋值,输入一段字符串,截取逗号前面的内容
比如输入 abc,d那么s = abc
后面就给另一个变量赋值,s 也没用到,而且还出现bug,因为你这次的scanf接收的是上一次的回车,所以相当于没有用

大马强 发表于 2021-10-26 22:25:21

scanf("%d\n",&v);
是不能用换行符的

紫苑天星 发表于 2021-10-27 16:23:50

大马强 发表于 2021-10-26 22:24
你这代码感觉一点意义都没有
你前面是给char s赋值,输入一段字符串,截取逗号前面的内容
比如输入...

可是当我输入这串@#1wer+IPD,6,00,AA,BB??字符串时,它能够精准的识别并输出IPD后的数字6,这是为什么?

大马强 发表于 2021-10-27 20:00:50

紫苑天星 发表于 2021-10-27 16:23
可是当我输入这串@#1wer+IPD,6,00,AA,BB??字符串时,它能够精准的识别并输出IPD后的数字6,这是为什么?

是我看错了抱歉
输入这个的话 @#1wer+IPD,6,00,AA,BB?? 确实可以打印一个6.

大马强 发表于 2021-10-27 20:02:55

scanf("%d\n",&v);
如果你输入了
123,
4 5
这样就会多输入了一次,打印的结果还是4


紫苑天星 发表于 2021-10-27 20:56:57

大马强 发表于 2021-10-27 20:02
如果你输入了
123,
4 5


要是我想问一下,为什么它能精准识别出来那个6呢?

紫苑天星 发表于 2021-10-27 20:58:12

紫苑天星 发表于 2021-10-27 20:56
要是我想问一下,为什么它能精准识别出来那个6呢?

它是不是在第一个逗号那里终止,然后就打印逗号后面的那个整形?

大马强 发表于 2021-10-29 09:27:05

紫苑天星 发表于 2021-10-27 20:58
它是不是在第一个逗号那里终止,然后就打印逗号后面的那个整形?

是的
页: [1]
查看完整版本: 求大佬帮一下萌新