我正在学习C,并且正在阅读《 C编程:一种现代方法,第二版》一书。如果有人有这本书,我将参加第8章编程项目6。
该项目希望我创建一个程序,该程序将来自用户的消息作为输入,将消息大写,将某些字符更改为数字,然后将其打印出来。我让程序可以处理示例消息(嘿,伙计,C非常酷),但是我不确定如何在不使用变量数组或动态数组的情况下使程序处理任何长度的消息,因为这本书还没有还没走那么远。任何帮助,将不胜感激。
我的代码如下
/* Translates a message entered by the user into BIFF speak */
#include <stdio.h>
#define SIZE ((int) (sizeof(message) / sizeof(message[0])))
int main(void)
{
char message[25];
int i;
for (i = 0; i < SIZE; i++)
message[i] = 0;
printf("Enter message: ");
for (i = 0; i < SIZE; i++)
scanf("%c", &message[i]);
for (i = 0; i < SIZE; i++) {
if ((message[i] >= 'a') && (message[i] <= 'z'))
message[i] = message[i] - 32;
switch (message[i]) {
case 'A':
message[i] = '4';
break;
case 'B':
message[i] = '8';
break;
case 'E':
message[i] = '3';
break;
case 'I':
message[i] = '1';
break;
case 'O':
message[i] = '0';
break;
case 'S':
message[i] = '5';
break;
}
}
printf("In B1FF-speak: ");
for (i = 0; i < SIZE; i++) {
printf("%c", message[i]);
}
printf("!!!!!!!!!!\n");
return 0;
}
您的代码使用sizeof确定输入消息的最大长度,该消息使用scanf进行扫描。
在C中,字符串以0结尾,因此您可以选择一些选项,因为字符串必须小于您提供的message []所在的字符串。
首先,您必须在message []中分配尽可能多的内存,以获取最大可能的消息。然后,您可以通过使用strlen(message)来获取消息的大小,该函数将计算直到前0个字符之前有多少个字符,并在您的方法中使用该字符,或者您可以简单地中断它;字符为0时退出循环(0终止符指示字符串的结尾)。您可以通过将for循环(i> SIZE)更改为((i <SIZE)&&(message [i]!= 0))来实现。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句