gpt4 book ai didi

c - 将 "String"拆分为 C 中的字符

转载 作者:行者123 更新时间:2023-12-02 09:36:20 25 4
gpt4 key购买 nike

我正在学习 C 语言的初学者类(class),并试图了解“字符串”。我以前用Java编程过,所以有点困惑。

我想知道如何将“字符串”拆分为字符,以便能够删除某些字符。我已经为链表编写了代码,每个节点都保存一个数据值,以及一个下一个指针(称为node_line,因为它保存行)。

typedef struct node {
char *data;
struct node *next;
} node_line;

这没有问题,我可以遍历整个列表并打印出每个元素:

void print_list(node_line head) {
node_line * current = head;
while(current != NULL) {
printf("%s\n", current->data);
current = current->next;
}
}

但是,我在将 current->data 中的“字符串”转换为字符时遇到问题。也就是说,一次读取一个字符。

例如,我想编写一个程序来删除“字符串”中的所有元音。我已经使用 getc() 函数在读取文件时成功解决了这个问题。但是,我似乎无法对当前->数据中的文本执行此操作。

    int c;
while((c = getc(f)) != EOF) {
//REMOVE
if(c=='a' || c=='e' || c=='i' || c=='o' || c=='u' || c=='y') {
printf(""); //Remove the vowel
}
else {
putchar(c); //Write out one character at the time.
}
}

我想象它是这样的:

while ((c = getc(current->data) != NULL) { ... }

非常感谢任何帮助、提示等!

最佳答案

getc 用于读取文件。要访问 char * 缓冲区(字符串)中的字符,您通常会执行以下操作:

for (const char * p = current->data; *p != '\0'; ++p)
{
char c = *p;
if (c=='a' || c=='e' || c=='i' || c=='o' || c=='u' || c=='y') {
...
}
}

或者,如果您更喜欢显式数组索引而不是指针:

const char * s = current->data;
for (int i = 0; i < strlen(s); ++i)
{
char c = s[i];
if (c=='a' || c=='e' || c=='i' || c=='o' || c=='u' || c=='y') {
...
}
}

关于c - 将 "String"拆分为 C 中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25863220/

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