我是C编程的新手,我试图创建一个函数来发送存储在一个数组字符中的内容,每次都会发生变化。所以,如果我的阵列是第一个"你好"它应该只发送5个字符,但如果以后是#34;再见"它应该发送7.如果我想扩展我的数组,我想要避免的是必须编写很多字符,如下所示:
int say (buttonpressed){
char a[11] = {'h','e','l','l','o'};
int i;
for (i = 0;i<12;i++)
{
U2TXREG = a[i];
while(U2STAbits.TRMT==0);
}
buttonpressed = 0;
return 0;
}
我会赞美任何想法,谢谢!
答案 0 :(得分:0)
您需要知道数组的长度或使用字符串结束字符(通常为\ x0 - 二进制零)。
答案 1 :(得分:0)
int say (buttonpressed){
char* a = "hello";
int i;
int size=strlen(a);
for (i = 0;i<size;i++)
{ //rest as before
通过使用字符串常量,您将数组初始化为以null(0)字符结尾。然后可以使用它来使用strlen查找字符串长度。
我还使用了一个指向字符串常量的指针,因为你没有修改它。
答案 2 :(得分:0)
你真的需要解释更多你想做什么。
根据您的说法,我了解您希望在不更改for循环的情况下更改数组的大小和内容。
如果是这样的话,你可以使用它:
#define ARRAY_LENGTH 12 /* 12 is an example */
int say (buttonpressed)
{
char a[ARRAY_LENGTH] = { . . . . };
int i;
for(i =0; i<ARRAY_LENGTH; i++){
...
}
....
}
答案 3 :(得分:0)
我会将数据和实际大小存储在结构中(类似于如何在C ++中使用std :: vector
struct vec{
char data[11];
unsigned int size;
}
然后在你的for循环中可以从i = 0循环到i
如果你的数组总是一个字符串,那么c风格的字符串在c中就是惯用的。这只是一个由\ 0终止的字符数组,并在循环数组时测试\ 0。