0

如果它以 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

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

4

1 回答 1

4

我认为你落后了一个:

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'而不是fileName[17].

于 2014-08-13T04:34:34.400 回答