【发布时间】:2015-10-05 20:04:32
【问题描述】:
我已经设法从程序中创建了以下输出:
7.86 ( 8Hm,), 6.82 ( 4Hm,),12.1 ( 1Hs,).
我想根据我指向的字符添加空格或删除空格。 sscanf 会允许你这样做吗?
我只是想知道在此文本中插入和删除空格的最简单方法是什么。例如,我想删除( 和'num' 之间的空格,例如8,但在H 和'letter' 之间提供一个空格,例如m。到目前为止,我的代码看起来像这样:
typedef struct node {
int i;
char array[SIZE];
struct node* link;
} node;
node* format(void)
{
int count = 0;
int size = list_size(data, sizeof(data)) / 4;
for (node* ptr = head; ptr != NULL; ptr = ptr->link)
{
int i;
int j;
for (i = 0, j = 0; i < sizeof(ptr->array); i++, j++)
{
if (ptr->array[0] == ' ' && count == 0)
{
count++;
j--;
}
else if (ptr->array[i] == ' ' && ptr->array[i-1] == '.')
{
j--;
ptr->array[i] = ',';
}
else if (ptr->array[i] == ',' && ptr->array[i-1] == ')')
{
if (count == size)
{
ptr->array[i] = '.';
}
}
ptr->array[j] = ptr->array[i];
}
count++;
}
return head;
}
请注意,上面当前是一个大小为 3 的链表,我创建了后者以启用字符“组”的交换,然后以特定方式反转顺序。如果我先将所有内容传回单个数组,格式化会更容易吗?
我们将不胜感激地收到任何提示/建议!
【问题讨论】:
-
如果没有看到您如何定义构成链表的结构,您的问题几乎是不可能回答的,但假设
node->array[]只是一个包含您正在格式化的字符串的字符数组,然后显示列表中包含的字符串的内容(或示例内容)肯定会帮助人们帮助您。您不应该期望人们必须对您的字符串进行逆向工程才能帮助格式化。 -
没错。首先正确格式化。
-
是的,节点如下:
标签: c arrays linked-list