字符串中的空格

时间:2014-02-19 23:09:30

标签: c encryption

我有一个在Caesar的密码中加密的文本。

使用fgets我将所有文本存储在缓冲区中。直到这里,数据才是原始形式,文本之间有空格。

现在,当我循环浏览文本并移动字母时,我的输出已删除了所有空格,而我没有更改任何文本。

这是我的代码:

int main(){
    char *buff;

    FILE *filePtr = fopen("text.txt", "r");

    fgets(buff, BUFF, filePtr);

    decrypt(buff);
}

void decrypt(char *s){
    int i, a, l;
    a = 3;
    l = strlen(s);

    for (i = 0; i < l; i++){
            if (!isalpha(s[i]))
                    continue;
            printf("%c", s[i] - 3);
    }

    printf("\n");
}

现在有人可以解释为什么我的输出中的空格消失了吗?

1 个答案:

答案 0 :(得分:1)

我实际上并没有运行代码所以这主要来自我的头脑,但我最好的猜测我会说空间可能没有通过isalpha检查所以被跳过,你需要添加第二个检查对于不是要转移但仍应打印的字母的字符。例如:

int main(){
    char *buff;

    FILE *filePtr = fopen("text.txt", "r");

    fgets(buff, BUFF, filePtr);

    decrypt(buff);
}

void decrypt(char *s){
    int i, a, l;
    a = 3;
    l = strlen(s);

    for (i = 0; i < l; i++){
            if (isalpha(s[i]))
                printf("%c", s[i] - 3);
            else if (isprint(s[i]))
                printf("%c", s[i]);
    }

    printf("\n");
}