gpt4 book ai didi

c - 如何以与输入类似的方式打印输出?

转载 作者:行者123 更新时间:2023-11-30 20:04:36 24 4
gpt4 key购买 nike

#include<stdio.h>
int main() {
int index=0;
char str[1000];
char c;
while((c=getchar())!='/') {
while((c=getchar())!='\n') {
scanf("%c",&str[index]);
index++;
}
str[index]='\n';
index++;
}
str[index]='\0';
printf("%s",str);
return 0;
}

我以多行的形式给出输入,我想以与提供的输入类似的方式显示输出,我使用“/”字符作为输入的结尾,现在我没有得到输出,如何解决这个问题?

最佳答案

stdin 读取字符时,就您的情况而言,如果您想终止对 '/' 的读取,则需要防范三个条件。 :

  1. index + 1 < 1000 (以防止溢出并保留空间空终止字符)
  2. (c = getchar()) != '/' (你选择的终结者);和
  3. c != EOF (您不想在设置 EOF 之后阅读流)

将这些部分组合在一起,您可以简单地执行以下操作:

#include <stdio.h>

#define MAXC 1000 /* define a constant (macro) for max chars */

int main (void) {

int c, idx = 0;
char str[MAXC] = ""; /* initialize your array (good practice) */

/* read each char up to MAXC (-2) chars, stop on '/' or EOF */
while (idx + 1 < MAXC && (c = getchar()) != '/' && c != EOF)
str[idx++] = c; /* add to str */

str[idx] = 0; /* nul-terminate (optional here if array initialized, why?) */

printf ("%s", str);

return 0;
}

(我鼓励在 putchar ('\n'); 之后添加 printf (或者简单地将 '\n' 添加到格式字符串),以防止输入没有最终 POSIX end-of -line,例如在 '/' 上停止,或达到 1000 字符,或从不包含 POSIX EOL 的重定向文件中读取)

输入文件示例

$ cat ../dat/captnjack.txt
This is a tale
Of Captain Jack Sparrow
A Pirate So Brave
On the Seven Seas.

示例使用/输出

$ ./bin/getchar_io <../dat/captnjack.txt
This is a tale
Of Captain Jack Sparrow
A Pirate So Brave
On the Seven Seas.

仔细检查一下,如果有任何问题请告诉我。

关于c - 如何以与输入类似的方式打印输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39120091/

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