从 char 输入连接字符串

Concatenate strings from char input

提问人:user979033 提问时间:10/28/2017 最后编辑:alkuser979033 更新时间:10/29/2017 访问量:272

问:

我想从 char 输入连接。strings

我想让用户逐个输入 char,然后我想撬动我的 .EOFstring

所以目前,如果我输入exapmle'r'点击并按下(我正在ubuntu上工作),这就是我在屏幕上看到的:charenterControl + D

r
r
�

这是我的程序:

#include <stdio.h>
#include <string.h>

int main()
{
    char c = 0;
    char str[127] = {'\0'};
    while (c != EOF)
    {
         c = getchar();
         strncat(str, &c, 1);
    }

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

    return 1;
}
字符串 初始化 EOF C-strings

评论

3赞 melpomene 10/28/2017
EOF不是字符。 返回 int 是有原因的。getchar
1赞 Weather Vane 10/28/2017
如果代码检测到换行符和 .您应该构建一个终止的字符串来传递给 。'\n'EOF'\0'strncat

答:

4赞 alk 10/28/2017 #1

这里有两个问题:

  • getchar()返回。所以也应该是,否则它可能无法存储.intcintEOF

  • 在第一次迭代中,代码尝试连接到未初始化的代码。这样做会调用未定义的行为。str

评论

0赞 user979033 10/28/2017
那么我需要在这里改变什么?(在字符 C 到 int c 旁边)
0赞 alk 10/28/2017
@user979033:“......到未初始化的 str"
1赞 Grantly 10/28/2017
有几种方法可以在 C 中初始化字符串......谷歌将帮助:)
0赞 alk 10/28/2017
@user979033:在将您作为第二个参数传递的内容更改为时也要小心。cintstrncat()
1赞 ad absurdum 10/29/2017
@aschepler -- 当然,有些整数值可能不适合 a(可能是 的值),在这方面,我的评论措辞可以更谨慎;但我的评论是针对 A 无法保持 的值的观点。Alk 在谨慎的措辞中是正确的“可能无法存储”。的值可能适合也可能不适合 ,并且 a 可能能够或可能不会采用负值,但基本执行字符集的任何成员都不能具有负值。charEOFcharEOFEOFEOFcharchar