c - 使用 getchar() 和 putchar() 将 int 与字符串交换
问题描述
对于我的家庭作业,我必须与一个角色进行交换和诠释。例如,如果用户输入 1,则输出应为“一”。这应该从零到 5 工作。
我的想法是实现一个看起来像这样的 char 数组。
*string[] = { "zero\0", ....., "five\0"}
然后我会在这样的代码中实现它。
#include <stdio.h>
int main()
{
int c;
while((c=getchar())!=EOF)
{
putchar(c);
}
return 0;
}
所以因为我只被允许使用 putchar 和 getchar 而没有堆。这将是我的方法:我将创建一个 for 循环,该循环将打印出每个字母,直到达到 \0。
这是正确的方法吗?
解决方案
你走在正确的轨道上,但这里有一些指示。
我不确定是什么*string[]
,但是因为您提前知道数组的大小,您可以制作一个固定大小的char*
数组来保存这样的字符串
char* arr[6] = {"zero\0", "one\0", ..., "five\0"};
请注意,该数组同时具有类型 ( char*
) 和名称 ( arr
)。
接下来你可以读入你想打印的号码
int c = getchar();
您可以使用之前定义的数组来获取正确的字符串并循环它,一次打印一个字符putchar
char* str = arr[c];
for (int i = 0; str[i] != '\0'; i++) {
putchar(str[i]);
}
putchar('\n');
正如Groo所指出的,字符串文字是隐式地以空值结尾的,所以你儿子不需要包含\0
在你的字符串中。数组可以只是
char* arr[6] = {"zero", "one", ..., "five"};
一切仍然有效。
推荐阅读
- php - foreach循环内的循环数组
- c# - 如何检查我是否在线程中捕获异常?
- android - 在颤振中创建日历提醒
- php - gRPC 给定 PHP 的错误元数据
- java - 更新到 ChromeDriver 2.46 后 Chrome 版本必须介于 71 和 75 之间的错误
- javascript - 单击功能区按钮时如何在新选项卡而不是新窗口中打开 Web 资源
- android - 为什么 android studio 设计器不适用于相对布局
- c - Is MPI_COMM_WORLD not constant?
- angular - Angular 7: What is "template" inside the @Component decorator?
- autodesk-forge - 如何自动将 3D DWG 或 DXF 转换为 STEP