#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main(){
char storage[128]="\0";
char buffer[24];
fgets(buffer, 24, stdin);
strcat(storage, buffer);
fgets(buffer, 24, stdin);
strcat(storage, buffer);
printf("%s", storage); // line 12
return 0;
}
当我在之前的line 12
行输入"string one\0string two"
和"string one"
时,我试图看到"string two"
打印fgets()
,而是打印{{1} }}。据我所知"string one\nstring two"
终止第一个字符串末尾的strcat()
所以这段代码应该给我我想要的格式,但事实并非如此。我做错了什么?
答案 0 :(得分:1)
结果"string one\nstring two"
是正确的,因为新行由fgets读取。按Enter键结束输入时输入换行符。
换行符使fgets停止读取,但它被函数视为有效字符,并包含在复制到str的字符串中。