从c中读取stdin中的字符串

时间:2017-03-10 16:02:07

标签: c string pointers gcc undefined-behavior

我写了一个简单的程序来读取字符串。

void main()
{
    char *str; /*didn't allocate memory*/
    scanf(" %s",str);
    printf("%s",str);
}

但它导致了分段错误。而下一个不是。

void main()
{
    char *str;
    scanf(" %c",str);
    printf("%c\n",str);
}

有人会介意澄清其实际效果吗?

1 个答案:

答案 0 :(得分:0)

您未分配字符串。这意味着你正在写一些你没有要求的地方。

然而你能做的是:

#include <stdio.h>    
#include <stdlib.h>

int main(int argc, char *argv[])

{
  char c;
  while (scanf("%c",&c) && c != '\n')
    printf("%c",c);
  printf("\n");

  return 0;
}

它将读取您在输入中发送的每个字符,直到您按下返回。