我有这个程序打印每个单词的第一个字母。 我检查了它似乎是正确的,但在最后一行(条件部分),如果条件为真,它不会进入第二行。
#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
string s = get_string();
if (s != NULL)
{
int n=0;
while(s[n]==' ')
{
n++;
}
printf("%c",toupper(s[n]));
for (int i=n+1,j=strlen(s) ;i<j ;i++)
{
if(s[i]=='\0')
{
if (i<j && s[i+1]!='\0')
printf("%c",toupper(s[i]));
}
}
printf("\n");
}
}
答案 0 :(得分:0)
因为您认为有很多&#39; \ 0&#39;在字符串中有很多单词。 实际上,只有一个字符:&#39; \ 0&#39 ;;
例如:
string s = get_string();
for (int i = 0, j = strlen(s); i < j; i++) {
printf("%c %d\n", s[i], i);
}
如果f =&#34; ef fe&#34 ;;
输出:
e 0
f 1
2
f 3
e 4
您可以知道:当s [5] =&#39; \ 0&#39;;
时这是一个演示版:
int main(void) {
string s = get_string();
int n = 0;
if (s != NULL) {
while (s[n] != '\0') {
while (s[n] == ' ') {
++n;
}
if(s[n]!='\0')
printf("%c %d\n", toupper(s[n]), n);
while (s[n] != ' ' && s[n] != '\0') {
++n;
}
}
}
return 0;
}