c删除新行char帮助

lea*_*123 1 c newline fgets

如果这是一个愚蠢的问题,我相当新的抱歉!

我有这个:

  fgets(question,200,stdin);
  char *memq = malloc(sizeof(strlen(question)));
  memq= question;
Run Code Online (Sandbox Code Playgroud)

但问题变量总是在它的末尾有一个新行!我如何删除/防止它发生?

我试过这个:

  fgets(question,200,stdin);
  char *memq = malloc(sizeof(strlen(question))-sizeof(char));
  memq= question;
Run Code Online (Sandbox Code Playgroud)

没有效果!

Kev*_*imm 5

要在你的malloc之前摆脱换行符:

question[strlen(question)-1] = 0;
Run Code Online (Sandbox Code Playgroud)

替代方案(在下面的评论中建议)将是以下方式:

question[strcspn(question, "\n")] = '\0';
Run Code Online (Sandbox Code Playgroud)

将malloc行更改为:

char *memq = malloc(strlen(question)+1);
Run Code Online (Sandbox Code Playgroud)

更改分配线:

memq = question;
Run Code Online (Sandbox Code Playgroud)

至:

strcpy (memq, question);
Run Code Online (Sandbox Code Playgroud)