gpt4 book ai didi

java - 如何在C中读取字符串的第一个字符

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

给定一个 C 语言的字符串 "Hello",返回字符串中的 "H" 的方法看起来如何。

然后,一旦我确定了如何做到这一点,我想更进一步,从初始字符串中删除第一个字符,以便下次我读取它时 "Hello" 变为 "ello",当我再次调用 read 方法时,它将返回 "e"?

我知道如何用其他语言(例如 Java)执行此操作,但我不精通 C,所以我真的很难理解这个概念。

下面是我在 java 中的实现方式。

public class Program1 {

private String expression = "-(1+3)*4/6";

public String cut_string(String word)
{

String temp = word.substring(1, word.length());
return temp;
}

public char readToken()
{
if(expression.length() > 1)
{
char token = expression.charAt(0);
expression = cut_string(expression);
return token;
}else {
System.out.print("BROKEN AT READ TOKEN");
return ' ';
}

}

public String getExpression()
{
return expression;
}

public static void main(String [] args)
{
Program1 thing = new Program1();


System.out.println("The token was: " + thing.readToken()
+ "\n" + "The remaining String is: "
+ thing.getExpression());

System.out.println("The token was: " + thing.readToken()
+ "\n" + "The remaining String is: "
+ thing.getExpression());

System.out.println("The token was: " + thing.readToken()
+ "\n" + "The remaining String is: "
+ thing.getExpression());
}
}

输出如下:

The token was: -

The remaining String is: (1+3)*4/6

The token was: (

The remaining String is: 1+3)*4/6

The token was: 1

The remaining String is: +3)*4/6

最佳答案

来自 Java,您应该记住,Java 意义上的“字符串”不是 C 的原生概念。在 C 中,您明确处理字符数组而不是更抽象的数据类型(除非您构建它们你自己)。将它们视为类似于 Java 中的 char[]

然后,返回字符串的第一个字符与返回数组的第一个元素(即字符串)完全相同:

char first_character(char *string) {
return(string[0]);
}

另一方面,更改程序的状态以“删除”字符串的第一个字符,在 C 中可能完全是多余的,具体取决于您希望如何操作。当然,您确实可以选择通过将所有元素移回一个位置来实际修改字符串,例如:

void remove_first_char(char *string) {
int i;

for(i = 0; string[i] != 0; i++)
string[i] = string[i + 1];
}

(但是请注意,字符串文字通常分配在只读内存中,不能修改。)

但是,根据您的上下文,您也可以非常简单地修改您可能使用的指针,使其仅指向第二个字符。

关于java - 如何在C中读取字符串的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29787412/

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