gpt4 book ai didi

c - 为什么我的 scanf 输入不能正确打印?

转载 作者:太空宇宙 更新时间:2023-11-04 01:08:06 24 4
gpt4 key购买 nike

我的程序扫描输入并打印所有使用的大写字母。

我也在尝试在我的程序结束时打印来自 stdin 的原始输入。

但是当我使用 printf 时,它似乎跳过了输入表达式的第一部分,打印了字符数组中的剩余内容。请帮我看看问题出在哪里。 -代码中的注释-

#include <stdio.h>

int main(void){

char input[81];
int letters[91];
int i;

//initialize arrays input and letters
for (i = 0; i < 90; i++) letters[i] = 2;
for (i = 0 ; i < 80; i++) input[i] = 'a';
i = 0;

//reads into input array until EOF
while((scanf("%c",input)!= EOF)){

//checks input for characters A-Z
if((input[i]>= 'A' && input[i]<= 'Z'))


letters[input[i]] = 1;
}

//prints capital letters from input that occur at least once
for(i = 'A'; i < 'Z'; i++){
if (letters[i]==1)
printf("%c", i);} // this output works fine, the scan worked??


//print blank line
printf("\n\n");


// print input
printf("%s\n", input); //This is where the incorrect output comes from.

return 0;}

我的原始输入有变化吗?为什么?我的输入一开始没有被正确扫描吗?请尽快回复!

最佳答案

这里:

while((scanf("%c",input)!= EOF)){

您只会将字符读入input[0]。这对于您为 letters 所做的事情来说很好,但显然当您尝试打印出 input 时,它不会像您期望的那样工作。

修复它时,您还需要记住在最后一个输入字符后添加终止符 \0

关于c - 为什么我的 scanf 输入不能正确打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19062769/

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