c - 奇怪的行为 printf - c lang

标签 c

我最近试图编写一个程序来转义字符串中的转义序列。一切看起来都很好,当我测试程序时还没有错误消息,没有任何打印。

#include <stdio.h>

#define MAXLINE 1000

void escape(char s[], char t[]);

int main () {
 char s[MAXLINE], t[MAXLINE];
 int i, c;
 for (i = 0; (c = getchar()) != EOF; i++)
     c = s[i];
  s[i] = '\0';
  escape(s, t);
  printf("%s\n",t);
  return 0;
}

void escape(char s[], char t[]) {
  int j = 0, i;
  for (i = 0; s[i] != '\0'; i++) {
    switch (s[i]) {
      case '\n':
       t[j] = '\\';
        t[++j] = 'n';
        ++j;
        break;
      case '\t':
        t[j] = '\\';
        t[++j] = 't';
        ++j;
        break;
      default:
        t[j] = s[i];
        ++j;
        break;
    }
  }
  t[j] = '\0';
}

谢谢。

最佳答案

main 函数中的 for 循环应该是:

for (i = 0; (c = getchar()) != EOF; i++)
    s[i] = c;

关于c - 奇怪的行为 printf - c lang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39188194/

相关文章:

c - C 中的 remstr 函数

在 C 中初始化未知值字符串的正确方法

c - C语言中如何修改字符串

c - 在结构中递增指向数组的指针

c - 如何确定 C99 中所需的最大对齐

c - 我应该将指针更改为数组吗?

c - 动态选择引用哪个#define

c - C 中 "* "、 "* "和 "*"指针之间的区别

C 中的布谷鸟哈希

c - free() 是否遵循指针?