C-声明char数组

时间:2014-03-30 20:06:58

标签: c arrays pointers

我是C的新手,并且无法为类项目声明一个字符数组。 这大致是我正在做的事情:

char test[]="Test\0";

char *Pointer;
Pointer=test;

然后我有一个函数printString(char* chars),它将Pointer作为参数。当我尝试编译时,我被告知没有声明测试或指针。我不确定为什么,所以有人能指出我正确的方向。

这是整个代码:

main()
{

   char *test2="Test\0";

    printString(test2);
}

printString(char* charArray)
{

    int charPos=0;
    int endOfString=1;

    char al;
    char ah;
    int ax;

    while(endOfString==1)
    {
            al=charArray[charPos];
            ah=0xE;
            ax=ah*256+al;

            interrupt(0x10,ax,0,0,0);


            if(al=='\0')
            {
                    return 0;
            }

            charPos++;
    }
}

4 个答案:

答案 0 :(得分:0)

使用你的函数:printString(char * chars)。

声明:

char *my_string = "Test";
printString(my_string);

答案 1 :(得分:0)

首先,那里没有必要使用NULL字符。

原因如下:

当声明一个字符数组并初始化时,如示例所示:

char test[] = "Test";

编译器将放置来自" Test"的字符。在测试数组中,然后添加一个空字符,以便测试可以用作字符串,如下所示:

    +---+---+---+---+----+
test| T | e | s | t | \0 |
    +---+---+---+---+----+

关于你的问题,看看这是否有帮助:

void print_string( char *p ) {
    while ( *p != '\0' ) {
     printf( "%c", *p );
     p++;
    }

}

请记住,C风格的字符串是一系列字符,它总是以NULL字符结尾。

函数" print_string",例如,期望一个指向char的指针作为参数(你可以通过你创建的char数组,它将起作用,因为数组被视为指针。) 该函数将打印每个字符,直到遇到NULL字符。

重要提示:

char test[]  = "Test";
char *test_2 = "Test";

在数组版本中,可以修改存储在test中的字符,就像任何数组的元素一样。 在指针版本中,测试指向字符串文字,不应修改字符串文字。

我认为问题可能是因为你正在尝试修改字符串文字。这样做会导致未定义的行为。

使用数组或分配内存并使char指针指向它。

答案 2 :(得分:0)

问题是可能是,因为在使用之前没有声明该功能。在C中,你必须在使用之前声明所有内容。在这种情况下,例如。

void printString(char* charArray);

int main(void)
{
    ...
}

void printString(char* charArray)
{
    ...
}

答案 3 :(得分:0)

抱歉......但是wtf?大声笑

   main()
    {

       char *test2="Test\0";

        printString(test2);
    }

    printString(char* charArray)
    {

        int charPos=0;
        int endOfString=1;

        char al;
        char ah;
        int ax;

        while(endOfString==1)
        {
                al=charArray[charPos];
                ah=0xE;
                ax=ah*256+al;

                interrupt(0x10,ax,0,0,0);


                if(al=='\0')
                {
                        return 0;
                }

                charPos++;
        }
    }

用于打印字符串,只需使用:

#include <stdio.h>
int  main(void)
{
   char  *my_string = "Test";

   printf("%s", my_string);
   return (0);
}