如何处理int中的特定数字

时间:2017-05-10 21:21:21

标签: c cs50

我有这个程序打印每个单词的第一个字母。 我检查了它似乎是正确的,但在最后一行(条件部分),如果条件为真,它不会进入第二行。

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

1 个答案:

答案 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;
}