打印数组中的字符

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

片段中ListView的setOnItemClickListener

我如何修改指针数组中的字符串?

JavaScript笔试题(js高级代码片段)

比较c ++字符串打印中的两个整数数组

对数组中的字符串进行排序,使其稀疏