我正在编译我的C代码,并得到两个错误:
警告:传递strcmp的参数2使得指针来自整数而没有强制转换
和
警告:注意:预期的const char*但参数的类型为int
我的主要是:
int main(int argc, char *argv[])
{
//check to make sure that the command line arguments are valid
if(argc!=3)
{
printf("invalid function call try again\n");
}
//else to choose the proper command
else
{
//reverse routine A
if(strcmp(argv[2],'a'||'A')==0) //line 138
{
reva(argv[1]);
}
//reverse routine B
else if(strcmp(argv[2],'b'||'B')==0) //line 143
{
revb(argv[1]);
}
//reverse routine C
else if(strcmp(argv[2],'c'||'C')==0) //line 148
{
revc(argv[1]);
}
//unacceptable command line argumant
else
{
printf("unacceptable command line argument for reverse …Run Code Online (Sandbox Code Playgroud) 我想比较两个字符串:
第一个字符串在我的main上面声明:
char _newState[] = "AVAILABLE";
Run Code Online (Sandbox Code Playgroud)
当我想与const字符串比较时,我把这行:
if(strcmppgm2ram((const char *) "AVAILABLE", _newState ) == 0){
code:
}
Run Code Online (Sandbox Code Playgroud)
函数永远不会返回零,什么是解决方案和正确的类型转换?strcmp是同样的问题!
我在我的程序中的函数是应该采取莫尔斯电码输入,把它比作一个字符串数组,并从相应的字符串返回一个字母一旦找到匹配的莫尔斯.我终于设法让它在没有崩溃的情况下运行,但现在它不断返回错误的字母.例如...... ---应该返回sos但是我得到了amb.我尝试通过打印出索引号,莫尔斯代码字符串和字母来测试它,所有这些都匹配起来,所以我认为问题在于字符串比较.
这是代码:
void morsetotext(char mor[])
{
char alpha[]={"abcdefghijklmnopqrstuvwxyz1234567890 "};
char *morse[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
"..", ".---","-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.",
"...", "-", "..-", "...-",".--", "-..-", "-.--", "--.","-----", ".----",
"..---", "...--", "....-",".....", "-....", "--...", "---..", "----." "/ "};
char letter[8];
char convert[250];
int con_count=0;
int let_count=0;
int count=0;
int index=0;
int length=strlen(mor);
while (count<length)
{
for(let_count=0; let_count<8 && mor[count]!=' '; let_count++)
{
letter[let_count]=mor[count];
count++;
}
letter[let_count+1]='\0';
index=0;
while (strcmp (letter, morse[index])!=1) …Run Code Online (Sandbox Code Playgroud) 我有这个代码试图将莫尔斯代码翻译成字母:
#include <stdio.h>
#include <string.h>
#define BSIZE 15
char *morseToLetter(char *);
int main() {
char *morseCode = ".... . .-.. .-.. --- / -.. .- .. .-.. -.-- / .--. .-. --- --. .-. .- -- -- . .-. / --. --- --- -.. / .-.. ..- -.-. -.- / --- -. / - .... . / -.-. .... .- .-.. .-.. . -. --. . ... / - --- -.. .- -.--";
char buffer[BSIZE] = { 0 };
int …Run Code Online (Sandbox Code Playgroud) 我想比较2个字符串但是当我做一个strcmp函数时,它告诉我:
'strcmp' : cannot convert parameter 1 from 'std::string'
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
这是我的代码:
int verif_file(void)
{
string ligne;
string ligne_or;
ifstream verif("rasphone");
ifstream original("rasphone.pbk");
while (strcmp(ligne, "[SynCommunity]") != 0 &&
(getline(verif, ligne) && getline(original, ligne_or)));
while (getline(verif, ligne) && getline(original, ligne_or))
{
if (strcmp(ligne, ligne_or) != 0)
return (-1);
}
return (0);
}
Run Code Online (Sandbox Code Playgroud) 我在C中编写了以下代码.
#include <stdio.h>
#include <string.h>
int main(void) {
char str1[4] = "abcd";
char str2[4] = "abcd";
printf("%d\n",strcmp(str1,str2));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我期望返回值为0(因为我被教导strcmp函数为相等的字符串返回0).但它打印1!
Success time: 0 memory: 2248 signal:0
1
Run Code Online (Sandbox Code Playgroud)
这是一个错误吗?还是我错过了什么?
我在C上有点生疏了.我正在学校任务,要求我创建一个程序,获取用户输入,然后打印输出.如果字符数高于50,则不打印任何内容并重新启用它们.退出不应打印计数(在本例中为4).
这是我到目前为止:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main ()
{ /*Start of main*/
printf("Type any word you'd like <= 50 characters.\nType quit to exit:\n");
char word[50];
int wordLength = 0;
while (strcmp(word, "quit") != 0)
{/*open of while loop (strcmp ... != 0)*/
scanf("%s\n", word);
wordLength = strlen(word);
if (wordLength > 50)
{
printf("Try again, >= 50 characters!:\n");
scanf("%s", word);
wordLength = strlen(word);
}
printf("%d\n", wordLength);
}/*End of while loop (strcmp... != 0)*/
return 0;
}/*End of main*/ …Run Code Online (Sandbox Code Playgroud) 我试图使用strcmp()比较两个字符串,并且在它们相等的情况下,函数返回-1(意味着它们不相等),我不知道什么是错的.
int main()
{
char password[]={'6','6','6','6','6','6'};
char passmatch[6];
int i =0;
for(i ; i<6 ; i++)
{
passmatch[i]='6';
}
printf("\n");
if(strcmp(password,passmatch)==0)
{
printf("Strings are equal");
}
else
{
printf("String are'nt equal");
}
return 0;
Run Code Online (Sandbox Code Playgroud)
}
我试图比较EEPROM存储的返回字符串的SSID与WiFi.SSID()函数.
虽然在串行监视器中它实际上是相同的,但我没有得到匹配,它永远不会达到if声明.
我尝试使用==不带.str()和使用的运算符if( strcmp ( a.c_str(),b.c_str)==1)
似乎没什么用.我在这里错过了什么?
void ConnectToBestWifi()
{
int apnos = WiFi.scanNetworks();
int loc[3];
int no=0;
for(int i=0;i<apnos;i++)
{
for(int j=0;j<3;j++)
{
Serial.println("");
Serial.println("Wifi SSID");
Serial.println(WiFi.SSID(i).c_str());
Serial.println("");
Serial.println("Read SSID");
Serial.println(ReadWifiSSID(j).c_str());
Serial.println("");
if (strcmp(((WiFi.SSID(i)).c_str()),((ReadWifiSSID(j)).c_str()))==1)
{
Serial.println("gotcha");
loc [no]=i;
no++;
}
}
Run Code Online (Sandbox Code Playgroud)
下面附带串行监视器的图像

我想知道是否有更快的方法来比较C中的字符串而不是使用strcmp(),特别是当我必须以switch语句方式比较字符串与多个预定义字符串时.在我的应用程序中,要比较的字符串有时可以大到1000个字符,所以只是想是否strcmp()足够,或者是否存在我不熟悉的更好,更有效的方法.我实际上正致力于低功耗嵌入式物联网项目,其中更多的CPU周期需要耗电.
strcmp ×10
c ×9
string ×5
c++ ×2
comparison ×2
arduino ×1
compare ×1
morse-code ×1
mplab-c18 ×1
strlen ×1