在这段代码中,我让用户输入他们想要写的字符数。
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main(void) {
// Ask the user to enter how many characters you want to write.
printf("Enter how many characters you want to write. \n");
int n;
int itemsRead = scanf_s("%d", &n);
if (itemsRead != 1) {
// scanf didn't read the expected input, handle the error
printf("Error: Input is not in the expected format.\n");
return 1; // Return a non-zero value to indicate an error
}
// Clear the input buffer
int c;
while ((c = getchar()) != '\n' && c != EOF);
char* string = NULL;
string = (char*)malloc(n * sizeof(char));
if (string != NULL) {
printf("Enter the string \n");
fgets(string, n, stdin);
printf("string is: %s\n", string);
}
free(string);
string = NULL;
}
问题是: 如果用户输入 3 个字符并尝试输入 3 个字符,则仅显示前 2 个字符。
我试图询问chatgpt,但它不起作用,一直告诉我问题出在fgets中,因为它读取换行符并将其替换为最后一个字符,因为没有空格,但如果是真的,为什么它将换行符替换为最后一个字符为什么它没有用换行符替换最后一个字符我不明白。请治愈。