我最近听到我的教授谈到能够做那样的事情。我找不到一个听起来像这样做的方法。所以我的问题就是。在标准的getchar while循环中,如何看一下下一个char。在这个循环中,我传入了一些数组,并且从数组s'chars到数组news'chars的循环切换字符,用于通过命令行输入的字符串。
无论如何,代码执行大多数情况下的目的,除了它还必须将“/ t”等字符视为单个字符而不是两个字符。我在考虑检查是否(c =='\'),然后检查下一个字符是否是r,t,n等。
TL:DR问题是如何让这个循环找到转义序列字符并将它们视为一个char而不是两个?非常感谢你。
void tr_str(char s[], char news[]){
int c;
size_t k =0;
while ((c = getchar()) != EOF)
{
for(k=0; k < strlen(s);k++)
{
if(c == s[k])
{
c = news[k];
}
}
putchar(c);
}
}
答案 0 :(得分:1)
通过阅读它来查看下一个字符,然后调用ungetc()
。
int c;
while ((c = getchar()) != EOF) {
if (c == 'x') {
ungetc(c, stdin);
break;
}
...
}
但是,当您处理转义序列时,只需要getchar()
两次。
while ((c = getchar()) != EOF) {
if (c == '\\') {
c = getchar();
switch (c) {
case EOF: ...
case 'n': ...
case 't': ...
}
}
...
}