C语言 奇怪的强硬,健忘的行为



我基本上是写代码来读取存储字符串的其余部分,如果它以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: %dn", strlen(input));
    printf("String input: %s", input);
    strncpy(fileName, &input[1], (strlen(input)) -2);
    fileName[strlen(input)-1] = '';
    printf("Filename to save: %s n", fileName);
}

当我输入ljudyjudyjudyjudy打印时得到的文件名是judyjudyjudyjudyjudyh

它有时工作与不同的输入,但有时额外的字符支持?

我想你差了一个:

fgets(input, 80, stdin);   //Need to use because only want to read maximum 80 characters
if(input[0] == 'l') {
    printf("String length: %dn", strlen(input));
    printf("String input: %s", input);
    strncpy(fileName, &input[1], (strlen(input)) -2);
    fileName[strlen(input)-2] = ''; // should be -2 instead
    printf("Filename to save: %s n", fileName);
}

在以"ljudyjudyjudyjudy"为输入的示例中,您希望将fileName[16]设置为''而不是fileName[17]

相关内容

  • 没有找到相关文章

最新更新