Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用字符串逐字打印(新行)_C_Gcc - Fatal编程技术网

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);
}