2017-10-28 200 views
1

我想从字符输入连接strings从字符输入连接字符串

我想用户将按字符键入char,直到EOF然后我想要编写我的string

所以目前如果键入char为exapmle“R”打enter并按Control + D(我工作在Ubuntu)这就是我看到我的屏幕上:

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; 
} 
+3

'EOF'不是字符。 'getchar'返回int是有原因的。 – melpomene

+1

如果它检测到换行符“\ n”和“EOF”,代码将更加用户友好。你应该建立一个''\ 0''终止的字符串传递给'strncat'。 –

回答

4

两个问题在这里:

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

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

+0

所以我需要在这里改变? (在char c到int c之间) – user979033

+0

@ user979033:“* ... to'str'这是未初始化的。*” – alk

+0

我可以请代码示例吗? – user979033