从数组中复制字符

标签 c arrays

我正在尝试编写一个程序来指定数组的内容,以替换特殊字符(输入、制表符)它们在 ASCII 代码中的对应项。当声明数组 s 不正确时会出现问题:

#include <stdio.h>
#include <stdlib.h>

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

int main()
{
    int k,j;
    k=j=0;
    char s[]="klks\nsgs \t";
    while(s[k]!=EOF)
        k++;
    char t[k];
    escape(s, t);
    while(j!=EOF)
    {
        printf("%d", t[j]);
        j++;
    }
}

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

最佳答案

我能够找到的问题:

  1. 您正在测试 EOF 而不是 '\0' 以找到字符串的结尾。

  2. 您没有为 t 数组分配足够的空间。现在,它与 s 数组的长度相同,但您需要更长的时间以容纳额外的转义字符。

  3. 您正在将字符串(例如 "\\""n")分配给 中的 char >转义。请改用 '\\''n'

  4. 您在转义中对 st 使用相同的索引,导致您在 s 中跳过字符转义一个角色。您需要分别跟踪st的当前索引。

  5. 您正在使用 for 循环来检查 i 是否符合 escape 中的 EOF。您应该使用 while 循环来检查 s[i]'\0'

  6. 永远不要终止字符串 t

错误太多...正在中止...

关于从数组中复制字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20024980/

相关文章:

C 二进制 I/O 程序问题

c - 有没有更有效的方法将文件解析为数组?

c - 传递参数给系统调用

python - 索引 numpy 数组的不同方法

arrays - 大型 VBScript 数组产生 'Out of Memory' 错误

c - 为什么我不能将数组名称放在等号的左侧

c - 为什么我的代码不打印排序数组?

c - 逆向工程c程序

c - C中的段错误(具有动态内存分配的二维数组)

C# 使用 LINQ 对字符数组列表进行排序