【问题标题】:Split words without function in c在c中没有功能的拆分单词
【发布时间】:2021-10-30 03:47:58
【问题描述】:

我创建了一个快照 void 函数。用户给出一个注册号,例如“M/12/222”,其中 12 是批号,222 是“e 号”。我创建了这样的代码,但它不能正常工作。上面的编号和批号并没有从注册号中拆分出来

这里我们不使用任何其他外部库。

char enumber[9];
char batchNo[2];
char eNO[3];
printf("Enter the Registration Number: ");
scanf("%s",enumber);
printf("%s\n",enumber);
for (int i=2;i<8;i++){
    if(2<=i&&i<4){
        batchNo[i-2]=enumber[i];
        printf("%c\n",batchNo[i-2]);
    }
    if(i>4){
        eNO[i-5]=enumber[i];
    }

}
printf("%s\n",batchNo);

【问题讨论】:

  • 如果“/”总是出现在值之间,则使用它来确定每个数据块的位置。
  • 对于初学者,printf("c\n",batchNo[i-2]); --> printf("%c\n",batchNo[i-2]);(在c 前面添加了%)。这为batchNo 提供了正确的输出。当我打印出eNO 时,看起来它的字符设置也正确。如果您希望它们成为字符串,请确保添加 NUL 终止符。
  • 帮自己一个忙,使用可用的tutorialspoint.com/index.htm
  • 请注意,batchNoeNO 数组中需要更多空间以允许空终止符,以便结果是字符串,而不仅仅是字符数组。您非常相信您的用户永远不会输入任何错误内容——而且用户(甚至您)通常非常不可靠,并且当您认为他们只会输入“hello”时,他们会想方设法输入“supercalifragilisticexpialidocious”。

标签: c function


【解决方案1】:

更改以下内容

printf("c\n",batchNo[i-2]);

printf("%c",batchNo[i-2]);

那么你的输出将是:

12

我看到的问题是您没有为传递给printf 语句的数据使用正确的格式类型。

如果您希望在循环之外输出您的值,那么您应该将它们视为字符串,记住 c 字符串是一个以空字符结尾的字符数组,并且应该在使用前初始化变量。

如果您的代码被更改为允许这样做,那么它应该可以工作。这是我的测试程序:

int main()
{
    char enumber[9] = "M/12/222";
    char batchNo[3] = {0};
    char eNO[4] = {0};

    for (int i=2;i<8;i++){
        if(2<=i&&i<4){
            batchNo[i-2]=enumber[i];
        }
        if(i>4){
            eNO[i-5]=enumber[i];
        }
    }
    printf("batchNo = %s\n",batchNo);
    printf("eNO = %s\n",eNO);   
}

你的收获:

batchNo = 12
eNO = 222

【讨论】:

    【解决方案2】:

    您需要将“\0”终止符放在字符串的末尾。没有这些,printf 将永远循环并打印整个世界,直到它在某处得到一个随机零。

    所以:

    char batchNo[3]; // one for the zero
    char eNO[4]; // one for the zero
    

    batchNo[2]='\0';
    eNO[3]='\0';
    

    任何地方。

    附加警告:scanf 可以让您写入超过 9 个字符,如果您愿意,可以在随机内存中写入值。适合演示测试,请勿在涉及真实用户的任何地方使用。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2016-10-27
    • 1970-01-01
    相关资源
    最近更新 更多