为什么我不能在 * 中获得多个空格?
why I can't get multiple spaces in *?
int main()
{
int input;
printf("input lenth : \n");
scanf("%d", &input);
while(getchar()!='\n')
continue;
printf("input str : \n");
char* sentence = (char*)malloc(sizeof(char) * input);
fgets(sentence, sizeof(sentence), stdin);
reverse(sentence, strlen(sentence));
free(sentence);
return 0;
}
我学fgets
可以得到space.
所以我 malloc
足够 space 到 sentence
ex) 100
然后我输入I am a boy
但是当我打印 sentence
时,它只打印 I am a
...
有什么问题?
此声明
fgets(sentence, sizeof(sentence), stdin);
不正确。你的意思好像是
fgets(sentence, input, stdin);
否则sizeof( sentence )
将产生一个指针的大小声明如
char* sentence = (char*)malloc(sizeof(char) * input);
注意函数fgets
可以在输入的字符串后面追加换行符'\n'
。你应该删除它
sentence[ strcspn( sentence, "\n" ) ] = '[=13=]';
当你说:
fgets(sentence, sizeof(sentence), stdin);
它为您提供了指针字符的大小,即 8(取决于您使用的 32 和 64 系统)。
所以你只能收到 7 个字符,因为 fgets 将 '\0' 字符分配给最后一个字符。
因此,使用您从用户那里收到的长度,即 100。
fgets(sentence, input, stdin);
int main()
{
int input;
printf("input lenth : \n");
scanf("%d", &input);
while(getchar()!='\n')
continue;
printf("input str : \n");
char* sentence = (char*)malloc(sizeof(char) * input);
fgets(sentence, sizeof(sentence), stdin);
reverse(sentence, strlen(sentence));
free(sentence);
return 0;
}
我学fgets
可以得到space.
所以我 malloc
足够 space 到 sentence
ex) 100
然后我输入I am a boy
但是当我打印 sentence
时,它只打印 I am a
...
有什么问题?
此声明
fgets(sentence, sizeof(sentence), stdin);
不正确。你的意思好像是
fgets(sentence, input, stdin);
否则sizeof( sentence )
将产生一个指针的大小声明如
char* sentence = (char*)malloc(sizeof(char) * input);
注意函数fgets
可以在输入的字符串后面追加换行符'\n'
。你应该删除它
sentence[ strcspn( sentence, "\n" ) ] = '[=13=]';
当你说:
fgets(sentence, sizeof(sentence), stdin);
它为您提供了指针字符的大小,即 8(取决于您使用的 32 和 64 系统)。 所以你只能收到 7 个字符,因为 fgets 将 '\0' 字符分配给最后一个字符。
因此,使用您从用户那里收到的长度,即 100。
fgets(sentence, input, stdin);