打印数组中的字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打印数组中的字符相关的知识,希望对你有一定的参考价值。
char input[100];
char *word;
gets(input);
word=strtok(input, " ");
char str[15];
str[0]=word;
printf("%c", str[0]);
这是我的代码,除了标题。我试图打印出角色,但它没有用。我怎么能修好它?我希望看到我从strtok()获得的角色。
答案
所以首先不要使用gets()
。
然后你做了这个错误的str[0]=word;
。两种逃脱它的方法。使用指针数组并复制字符串或复制str
中的单词。
char input[100];
char *word;
char str[15];
if(fgets(input,100,stdin)){
word=strtok(input, " ");
if( word && strlen(word)<15){
strcpy(str,word);
printf("First word: %s
", str);
}
}
要不然
char input[100];
char *word;
char* str[5];
if(fgets(input,100,stdin)){
word=strtok(input, " ");
if( word ){
str[0]=strdup(word);
printf("First word %s
", str[0]);
}
}
或者更简单的是,如果你知道这些话之间有空间,就像你说的那样
char input[100];
char str[15];
if(fgets(input,100,stdin)){
if( sscanf(input,"%14s",str) == 1){
printf("First word %s
",str);
}
}
要存储你需要的所有单词来扩展代码 - 我会告诉你strdup
的那个,另一个可以同样地完成。
char input[100];
char *word;
char* str[5];
size_t cnt = 0;
if(fgets(input,100,stdin)){
word=strtok(input, " ");
while( word != NULL ){
str[cnt]=strdup(word);
printf("%zu word %s
",cnt, str[cnt]);
cnt++;
word=strtok(NULL, " ");
}
}
完成后,释放重复的字符串。
另一答案
strtok
返回指向char
的指针。在将word
指定为str[0]
之前需要取消引用str[0]
,因为char
的类型为str[0]=word;
。
更改
str[0] = *word;
至
strtok
另一答案
word[0]
返回指向下一个标记的指针(在本例中为第一个标记),因此如果要访问此标记的第一个字符,则必须使用str[0]=word
。在你的代码中,行str[0]=(char)word
会自动转换为char input[100];
char *word;
gets(input);
word=strtok(input, " ");
char str[15];
str[0]=word[0];
printf("%c", str[0]);
,这意味着指针地址的第一个字节。
qazxswpoi
以上是关于打印数组中的字符的主要内容,如果未能解决你的问题,请参考以下文章
片段中 ListView 的 setOnItemClickListener