比较两个用户输入数组之间的元素?

时间:2014-12-19 23:31:53

标签: c arrays twitter

(我对编程很新......温柔:C) 我正在尝试完成额外的信用分配,我必须编写一个Twitter扫描程序。我必须首先将用户输入转换为主题标签 例如:“#CMSC101” 然后阅读用户的“推文”,直到用户输入'。' 从那里程序计算用户使用标签的次数以及推文中提到的标签的次数

进展:

#include <stdio.h>
int main(void){

int [MAX_TWEET_SIZE];
char target_tweet[MAX_TWEET_SIZE];
char tweet = 0;
int match = 0;
int instance = 0;

printf ("Enter Target Tweet\n");

fgets (target_tweet, MAX_TWEET_SIZE, stdin);

if (target_tweet[0] != '#'){
    printf("ERROR\n");
    return 0;
}   

printf("Enter Tweets!\nenter '.' to quit: \n");


while (tweet < 140){
    scanf("%c", &tweet);
    tweet = tweet + 1;
    if ((tweet = target_tweet)){
        printf ("Tweet Matched.\n");
        match = match + 1;

    }
    if ((tweet = '.')){
        printf("%d tweet(s) matched\n", match); 
        return 0;
    }
}
return 0;
}

这是我到目前为止所遇到的一些问题(即:while循环)。我已经非常沮丧,我不确定我是否正确行事 任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

乍一看有两个错误:

if ((tweet = target_tweet))

如果您要使用==,如果要检查两个变量是否相等,但是您无法比较两个字符串。您的代码会将target_tweet分配给tweet,但它们甚至不是同一类型。我甚至不能在这里得到你想做的事。如果你想检查tweet和target_tweet是否相等,你应该使用strcmp,你应该在推文中读作一个字符串。

while (tweet < 140)

我没有看到这个需要。你应该简单地使用无限循环,如:

while(1)

基本上我会以某种方式尝试:

while (1){
   scanf("%s", tweet);
   if (strcmp(tweet, target_tweet == 0){
       pritnf ("Tweet Matched.\n");
       match++;
   }

   if ((tweet[0] == '.')){
       printf("%d tweet(s) matched\n", match); 
      break; //to end the loop
   }
}

答案 1 :(得分:0)

首先,您有一些拼写错误。第一个是while循环中的printf。第二个是顶部的int MAX_TWEET_SIZE。你有一个额外的支架。

其次在(tweet < 140){时,由于数据类型的范围有限,因此比较总是如此。我建议你改用while(true){}

最后一个错误是if ((tweet = target_tweet)){。在此代码中,您从char*转换为char的转换无效。要解决此问题,您可以使用strcmp,因为您无法将两个字符串与“=”进行比较。这是我发现这段代码的错误。我希望这能回答你的问题。