我有一个非常简单的实验任务,我要做的就是将字符串中的字符打印两次,除非它是空格。

由于某种原因,我似乎无法弄清楚,“ echoString”函数正在循环无限。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main(){

char* rhyme1 = "Hey Diddle diddle the Cat and the fiddle";
char rhyme2[265];
strncpy (rhyme2, "The Cow Jumped Over The Moon", sizeof(rhyme2));
char wordList[8][100];

/*Q1: Length of the string rhyme?*/
printf("Length: %d", strlen(rhyme1) );

/*Q2: Print out each letter twice, except for the spaces*/
echoString(rhyme1);

}

void echoString ( char* pString ) {

while ( *pString != '\0' ) {

    if ( !isspace( *pString ) ) {
        printf("%s%s", *pString, *pString);
    }
    else {
        printf("%s", *pString);
    }
    pString++;
}
}


我感觉到这与我增加指针或isspace函数的方式有关。

谢谢你的时间。

编辑:将“ / 0”更改为“ \ 0”。没见到就傻了。

最佳答案

\0用于以空字符结尾的字符,而不是/0。将'/0'更改为'\0'
使用%c来打印char,而不是%s,而是打印string。将所有%s更改为%c

08-16 02:16