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

私はあなたが1つずれていると思います:

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 に答える