gpt4 book ai didi

c - 如果使用这个程序,为什么第一个字母不进入数组?

转载 作者:行者123 更新时间:2023-12-04 15:28:13 27 4
gpt4 key购买 nike

#include <stdio.h>

int main(int argc, char **argv){
int c;
char str[10];
while ((c=getchar()) != '\n') {
scanf("%s",str);
}

printf("%s\n", str);
}

如果输入是“数据”,则输出是“ata”,其中缺少“D”。不知道为什么。有什么解释吗?

最佳答案

在你的程序中,

while ((c=getchar()) != '\n') {
scanf("%s",str);
}

getchar 将吸收第一个字符,然后 scanf 将吸收除最后一个 '\n' 之外的所有字符,这将结束while 循环。

因此 str 错过了第一个字符。

更改为

do  {
scanf("%s",str);
} while ((c=getchar()) != '\n');

获取整个字符串。或者简单地删除循环和 getchar()...

关于c - 如果使用这个程序,为什么第一个字母不进入数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61832443/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com