gpt4 book ai didi

c - 如何确保给定长度的字符串充满空格?

转载 作者:太空宇宙 更新时间:2023-11-04 07:24:17 25 4
gpt4 key购买 nike

我有一堆字符串需要验证它们是否全是空格。

我可以做 strlen(trim(strct.data)) > 0

但是,它不是空终止,但是长度是已知的

即如果 strct.len 是 5 那么我需要验证 strct.data 是否有 5 个字符的空格。第 6 个字符不保证为空。我有一个 strct 数组,每个数组都可以有不同长度的数据来验证空格。

我尝试了 strnlen(trim(strct.data)),后来意识到它没有解决任何问题,因为 trim 已经删除了所有空格。

除了对 strct.data 的每个字符进行明显的循环之外,还有其他想法吗(如果没有其他选择,我的最后一个选择)?

注意:trim 是我用来删除前导和尾随空格的用户定义函数。它也不会停止,直到 NULL。我正在寻找一种方法来处理这两者。

最佳答案

How to ensure the string is full of spaces for a given length?

第一步:

  char buf[MAX_SIZE];
sprintf(buf,"%*s",MAX_SIZE-1,""); //fill buffer with spaces

第 2 步:

现在使用strncmp() 比较strct.data 字符数组的strct.len 字符数与buf

if(strncmp(strct.data ,buf ,strct.len) ==0)
{
//all are spaces
}

您无需重复步骤 1。


另一个解决方案 jxh 建议你也可以使用 memset() 而不是 sprintf()

  memset(buf, ' ', sizeof buf); //fill buf with all spaces 

你只需要这样做一次,下次就不需要这样做了。


您也可以使用 VLA。

声明 char buf[strct.len];

但是每次都需要用到memset。

关于c - 如何确保给定长度的字符串充满空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19523238/

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