复制数组中的字符

时间:2013-11-16 22:55:34

标签: c arrays

im'尝试编写一个程序来规定数组的内容,以替换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];
        }
    }
}

2 个答案:

答案 0 :(得分:3)

我能找到的问题:

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

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

  3. 您正在为"\\"中的"n"分配字符串(例如charescape)。请改用'\\''n'

  4. 您在转义中使用st的相同索引,导致您在转义字符时跳过s中的字符。您需要单独跟踪st的当前索引。

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

  6. 您永远不会终止字符串t

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

答案 1 :(得分:1)

循环一个字符串,直到NULL而不是EOF

我真的不明白这个问题是什么,请你澄清一下吗?