1

一个简单的代码是:

#include <stdio.h>

int main() {
    printf("Hello\tworld");
    char line[1000];
    gets(line);
    printf("%s\n",line);
    return 0;
}

因此,如果我输入“Hello\tworld”,它将打印出“Hello\tworld”,但预定义的字符串“Hello\tworld”将被打印出:

hello       world

有没有办法让gets函数知道转义序列?

4

4 回答 4

2

当您在 stdin 中键入 "\t" 时,您将得到您输入的内容,它存储为'\''t' 不是 ascii 等价于 .'\t'为什么不在 stdin 中使用 "tab-key" \t

于 2012-04-18T03:11:57.547 回答
1

printf("Hello\tworld"); 上的字符串 它由编译器转换为已编译的字符串,其中转义码转换为字符,因此 printf 函数在执行时不会看到两个字符“\t”字符串,而是单个制表符的等效代码。但是gets() 函数在运行时获取每个键入字符的字符串,并且不转换转义码。因此,如果您想转换这些转义码,您必须创建一个替换功能。

于 2012-04-18T03:57:11.447 回答
0

不是我知道的。您需要手动将出现的转义字符序列替换为其对应的字符

于 2012-04-18T03:11:01.803 回答
0

get 函数不查看任何符号(例如:\t \n),只给出输入的每个字符的 ascii。据我所知,除了手动替换您关心的那些之外,没有办法让它关注这些。scanf 是相同的方式,会给你同样的问题。

于 2012-04-18T03:20:48.100 回答