C 使用字符串逐字打印(新行)
我试着一个接一个地打印一串单词,但我被卡在这里了。。。否则会将整个字符串打印四次,但这不是我想要的逻辑C 使用字符串逐字打印(新行),c,gcc,C,Gcc,我试着一个接一个地打印一串单词,但我被卡在这里了。。。否则会将整个字符串打印四次,但这不是我想要的逻辑 #include <stdio.h> #include <string.h> int main() { char str[] = "Hello! A_word and Another_word"; unsigned int count = 0; unsigned int str_size = strlen(str); do {
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "Hello! A_word and Another_word";
unsigned int count = 0;
unsigned int str_size = strlen(str);
do {
while(str[count++] != 32) {
// more codes needed here I think to manipulate one word
}
// print one word and proceed
printf("%s\n", str);
} while(count < str_size);
return(0);
}
#包括
#包括
int main()
{
char str[]=“你好!一个单词和另一个单词”;
无符号整数计数=0;
无符号整数str_size=strlen(str);
做{
while(str[count++]!=32){
//我想这里需要更多的代码来操作一个单词
}
//打印一个单词并继续
printf(“%s\n”,str);
}而(计数
输出应为:
你好!一个单词
和
另一个单词
基本上你需要转换换行符(
'
)中的空格('\n'
)
基本上,您需要转换换行符(
'
)中的空格('\n'
)
我建议您使用strtok_r(),以下是您的代码:
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[] = "Hello! A_word and Another_word";
char *token;
char *saveptr = str;
while (1) {
token = strtok_r(saveptr, " ", &saveptr);
if (token == NULL) {
break;
}
printf("%s\n", token);
}
return(0);
}
#包括
#包括
内部主(空)
{
char str[]=“你好!一个单词和另一个单词”;
字符*令牌;
char*saveptr=str;
而(1){
令牌=strtok_r(saveptr,“,&saveptr);
if(标记==NULL){
打破
}
printf(“%s\n”,标记);
}
返回(0);
}
我建议您使用strtok\u r()
,以下是您的代码:
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[] = "Hello! A_word and Another_word";
char *token;
char *saveptr = str;
while (1) {
token = strtok_r(saveptr, " ", &saveptr);
if (token == NULL) {
break;
}
printf("%s\n", token);
}
return(0);
}
#包括
#包括
内部主(空)
{
char str[]=“你好!一个单词和另一个单词”;
字符*令牌;
char*saveptr=str;
而(1){
令牌=strtok_r(saveptr,“,&saveptr);
if(标记==NULL){
打破
}
printf(“%s\n”,标记);
}
返回(0);
}
为什么不用换行符替换空格?@Stargateur整个字符串根据字符串的长度打印四次,而我不是我想要的。。。但是我缺少字符串是EOL这里printf(“%s”,str)
希望str
是一个字符串文本,因此它将打印整个字符串,而不关心字符串之间是否有空格。一个解决方案是将字符串拆分为单词,并分别打印每个单词。为什么不用换行符替换空格?@Stargateur整个字符串根据字符串的长度打印四次,而我不是我想要的。。。但是我缺少字符串是EOL这里printf(“%s”,str)
希望str
是一个字符串文本,因此它将打印整个字符串,而不关心字符串之间是否有空格。解决方案是将字符串拆分为单词,并分别打印每个单词。
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[] = "Hello! A_word and Another_word";
char *token;
char *saveptr = str;
while (1) {
token = strtok_r(saveptr, " ", &saveptr);
if (token == NULL) {
break;
}
printf("%s\n", token);
}
return(0);
}