我是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++;
}
}
答案 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);
}