(我对编程很新......温柔: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循环)。我已经非常沮丧,我不确定我是否正确行事 任何帮助将不胜感激!
答案 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
,因为您无法将两个字符串与“=”进行比较。这是我发现这段代码的错误。我希望这能回答你的问题。