gpt4 book ai didi

c - 在 C 中读取并打印字符串

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

所以我一直在尝试读取输入字符串,然后通过不使用 scanf() 来打印它也不printf()但是getchar()putchar()反而。程序似乎陷入了循环,我无法发现错误。

#include <stdio.h>

void getstring(char *c)
{
char inS[100];
char n;
int i = 0;
while ((n = getchar()) != '\n') {
inS[i] = n;
i++;
}
inS[i] = '\0';
i = 0;
while (inS[i] != '\0') {
putchar(inS[i]);
i++;
}
}
main()
{
char *prompt;
prompt = "Enter a sentence: \n";
getstring(&prompt);
printf("%s", prompt);

}

最佳答案

您的代码有一些问题。这是更正后的代码:

#include <stdio.h>

void getstring(void) /* You don't use the passed argument. So, I've removed it */
{
char inS[100];
/* `char n;` getchar() returns an int, not a char */
int n;
int i = 0;
while (i < 99 && (n = getchar()) != '\n' && n != EOF) /* Added condition for preventing a buffer overrun and also for EOF */
{
inS[i] = n;
i++;
}
inS[i] = '\0';
putchar('\n'); /* For seperating input and output in the console */
i = 0;
while (inS[i] != '\0')
{
putchar(inS[i]);
i++;
}
putchar('\n'); /* For cleanliness and flushing of stdout */
}
int main(void) /* Standard signature of main */
{
char *prompt;
prompt = "Enter a sentence: \n";
printf("%s", prompt); /* Interchanged these two lines */
getstring(); /* Nothing to pass to the function */
return 0; /* End main with a return code of 0 */
}

注意:输入循环将在以下任一情况下结束

  • 遇到\n(Enter)。
  • 遇到了EOF
  • stdin 中读取了 99 个字符。

关于c - 在 C 中读取并打印字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35823225/

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