gpt4 book ai didi

C 控制台 - 分隔不同的值

转载 作者:行者123 更新时间:2023-11-30 17:02:37 28 4
gpt4 key购买 nike

我是编程新手,正在尝试不同的在线事件以掌握它。我遇到了一个特定的问题,我想制作一个程序,用户输入一个值并打印一个特定的字符串。例如,当用户输入 0 时,将打印字符串“black”,输入 1 将打印字符串“brown”,如下图所示:

enter image description here

我的问题是,我希望用户输入一个值,例如 012,它会打印带有空格的“黑色、棕色、红色”。我首先执行以下操作:

#include <stdio.h>
#include <stdlib.h>

int colours(int t){
if(t == 0){
printf("black");
}
else if(t == 1) {
printf("brown");
}
else if (t == 2) {
printf("red");
}
else if(t == 3) {
printf("orange");
}
else if(t == 4) {
printf("yellow");
}
else{
printf("incorrect colour number");
}
return;
}

int main()
{
int n;
printf("Enter n: ");
scanf("%d", &n);
printf("colour code"", colours(n));
return 0;
}

如何一次打印多种颜色?我不是要求代码,我只是需要至少使用什么的提示,我不确定使用 IF 语句是否正确解决这个问题?

最佳答案

要“分解”用户输入,您可以尝试将其作为字符串(字符表)接收。

char* input = ( char* ) malloc( sizeof( char ) * maxlength + 1 ); // allocate a char table to store user input, maxlength being the maximum length you expect.
scanf("%s", input);

注释 1:您必须将期望从用户输入接收到的最大长度加 1,因为 scanf 还需要一个 char添加字符 \0终止字符串。
注2:\0字符也称为 NULL-terminator .

然后你像这样浏览字符串:

for( int i = 0 ; i < strlen( input ) ; i++ )
{
colours( input[ i ] );
}

注1:您必须#include <string.h>使用strlen .
注意 2:您可能需要将 char 转换为 int 才能将其传递给 colours ,使用:colours( ( int ) input[ i ] ); .
注3:类型转换char进入int给出 char 的 ASCII 值。

并使用ASCII code (查找数字)每个 char识别并打印它们。因此,您可以使用以下两种方法之一对其进行测试:

void colours( int t )  // as mentioned in the comments, you do not have to return something.
{
switch( t )
{
case 49: // ASCII code of 1
printf("brown\n");
break;

// ... other cases

default: // Don't forget the default statement
printf("incorrect colour number\n");
break;
}
}

或者:

switch( t - (int) '0' ) // (ASCII code of t - ASCII code of '0') gives you the number given by the user, as an int
{
case 1: //
printf("brown\n");
break;

// ... other cases

default:
printf("incorrect colour number\n");
break;
}

正如其他人在评论中所说,当您必须连续执行超过 2 个 else if 时,最好使用 switch case 语句。 。

最后,不要忘记释放手动分配的内存,这样就不会出现内存泄漏:

free( input );

关于C 控制台 - 分隔不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36516114/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com