gpt4 book ai didi

c - 奇怪的 strncpy、fgets 行为

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:16 25 4
gpt4 key购买 nike

我基本上是在编写代码来读取存储以 l 开头的字符串的其余部分的内容。到目前为止,这是我的代码:

char input[80];
char fileName[80];

fgets(input, 80, stdin); //Need to use because only want to read maximum 80 characters

if(input[0] == 'l') {
printf("String length: %d\n", strlen(input));
printf("String input: %s", input);
strncpy(fileName, &input[1], (strlen(input)) -2);
fileName[strlen(input)-1] = '\0';
printf("Filename to save: %s \n", fileName);
}

当我输入 ljudyjudyjudyjudy我 printf 时得到的文件名是 judyjudyjudyjudyH

它有时适用于不同的输入,但有时会出现额外的字符?

最佳答案

我认为你差了一个:

fgets(input, 80, stdin);   //Need to use because only want to read maximum 80 characters

if(input[0] == 'l') {
printf("String length: %d\n", strlen(input));
printf("String input: %s", input);
strncpy(fileName, &input[1], (strlen(input)) -2);
fileName[strlen(input)-2] = '\0'; // should be -2 instead
printf("Filename to save: %s \n", fileName);
}

在您使用 "ljudyjudyjudyjudy" 作为输入的示例中,您希望将 fileName[16] 设置为 '\0' 而不是 文件名[17]

关于c - 奇怪的 strncpy、fgets 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25278016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com