如果这是一个愚蠢的问题,我相当新的抱歉!
我有这个:
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)
没有效果!
要在你的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)