如何从 C lang 中的字符串(char 数组)中删除所有数据?

How can I delete all data from string (char array) in C lang?

我正在扫描一个字符串,我希望该字符串只是整数类型的元素,所以我对它做了一些验证,它适用于字符,但它对浮点数来说不够好。例如如果我输入 1.2 值作为输入,那么它不需要单个数字的输出并且适用于 2 位和更多。同样,如果我输入 12.3,那么它不需要两位数的输出,而适用于 3 位或更多位。谁能告诉我这里发生了什么?有什么办法可以删除字符串中输入的所有元素,以便只能获取整数值?

P.S。我正在使用字符串,因为我需要根据给定的程序问题从字符串中获取数字输入。

printf("Enter the number you want to convert into words:\n\n-->");
gets(numberToBeConvertedToWords);
for (i = 0; i != strlen(numberToBeConvertedToWords); i++)
{
   while (isdigit(numberToBeConvertedToWords[i]) == 0)
   {
      // deleting the characters entered in the string.
      memset(numberToBeConverted, 0, sizeof(numberToBeConverted));



      printf("Please enter positive integers only.\n\n-->");
      gets(numberToBeConvertedToWords);
   }
}

printf("Entered number: %d", numberToBeConvertedToWords);

convertAndPrintNumberToWords(numberToBeConvertedToWords);

按书面回答问题:

How can I delete all data from string (char array) in C lang?

执行此操作的典型方法是将字符串的每个字符设置为零。最简单的方法是使用 memset,假设您知道字符串有多少有效内存。

//Safe, because we know the length of the string
char s[100];
memset(s, 0, 100);

//Only safe if the string is correctly null-terminated
char* s = getSomeString();
memset(s, 0, strlen(s));

解决隐含的问题:

您实际上想问的问题似乎是 "why does my code not do what I expect?"。模糊 "help me" 问题通常与 Stack Overflow 无关。如果您可以就您的问题提出具体问题,您会得到更好的答复。在这种特定情况下,获得 'incorrect' 输出会很有帮助,因为很难理解意外行为到底是什么。

但是,我猜测您编辑的代码没有按照您的预期运行的原因是 while 位于一个奇怪的地方。如果遇到 '.',isdigit 将 return 0 并且您将正确擦除字符串。但是,您随后在 while 循环 中得到一个新字符串 ,这意味着您从 当前位置 开始验证新字符串,而不是开始字符串。

您可能想将 while 循环移到 for 循环之外:

BOOL valid = true;
do
{
    gets(numberToBeConvertedToWords);

    // reassigning the bool value as "true" so that loop does not to go infinite 
    // loop just in case if it's changed from 'if' block.
    valid = true;

    for (i = 0; i != strlen(numberToBeConvertedToWords); i++)
    {
        if(!isdigit(numberToBeConvertedToWords[i]))
        {
            // deleting the characters entered in the string.
            memset(numberToBeConverted, 0, sizeof(numberToBeConverted));

            printf("Please enter positive integers only.\n\n-->");
            valid = false;

            break;
        }
    }
} while(!valid);