提问人:user979033 提问时间:10/28/2017 最后编辑:alkuser979033 更新时间:10/29/2017 访问量:272
从 char 输入连接字符串
Concatenate strings from char input
问:
我想从 char 输入连接。strings
我想让用户逐个输入 char,然后我想撬动我的 .EOF
string
所以目前,如果我输入exapmle'r'点击并按下(我正在ubuntu上工作),这就是我在屏幕上看到的:char
enter
Control + 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;
}
答:
4赞
alk
10/28/2017
#1
这里有两个问题:
getchar()
返回。所以也应该是,否则它可能无法存储.int
c
int
EOF
在第一次迭代中,代码尝试连接到未初始化的代码。这样做会调用未定义的行为。
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:在将您作为第二个参数传递的内容更改为时也要小心。c
int
strncat()
1赞
ad absurdum
10/29/2017
@aschepler -- 当然,有些整数值可能不适合 a(可能是 的值),在这方面,我的评论措辞可以更谨慎;但我的评论是针对 A 无法保持 的值的观点。Alk 在谨慎的措辞中是正确的“可能无法存储”。的值可能适合也可能不适合 ,并且 a 可能能够或可能不会采用负值,但基本执行字符集的任何成员都不能具有负值。char
EOF
char
EOF
EOF
EOF
char
char
评论
EOF
不是字符。 返回 int 是有原因的。getchar
'\n'
EOF
'\0'
strncat