首页 > 解决方案 > 使用 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。

这是正确的方法吗?

标签: carraysstringpointersreplace

解决方案


你走在正确的轨道上,但这里有一些指示。

我不确定是什么*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"};

一切仍然有效。


推荐阅读