gpt4 book ai didi

c - C 语言中比较 2 个字符串的程序

转载 作者:行者123 更新时间:2023-11-30 18:21:33 24 4
gpt4 key购买 nike

这是我的程序:

#include <stdio.h>
#include <string.h>

int main(){
char alegere[10];
int a;
printf ("Alege natura matricei tale: (Numere/Caractere)");
scanf ("%s", &alegere[10]);
if (strcmp(alegere, "Numere") == 0){
printf("a");
} else
printf ("b");
return 0;
}

它应该将我从键盘写入的字符串与字符串“Numere”进行比较,但是如果我提示字符串“Numere”或任何其他字符串,结果将是相同的,我将打印“b” ...那我做错了什么?

最佳答案

三件事:

  1. 根据评论中的建议,您应该在 scanf 中使用 "%9s" 而不是 "%s"。这可以确保输入的字符数不会溢出数组 alegere,该数组只能容纳 10 个字符。 (为什么是 9 而不是 10?因为 C 字符串是 null terminated 。)
  2. 您在调用 strcmp 时缺少 )
  3. &alegere[10] 没有做你想做的事; &alegere[10]alegere[10] 的内存地址,或者是数组末尾的地址。这意味着您的 scanf 调用未定义的行为。将其替换为 &alegere[0] 或更简单的 alegere

更正的代码:

#include <stdio.h>
#include <string.h>

int main(){
char alegere[10];
printf ("Alege natura matricei tale: (Numere/Caractere)");
scanf ("%9s", alegere);
if (strcmp(alegere, "Numere") == 0){
printf("a");
} else
printf ("b");
return 0;
}

关于c - C 语言中比较 2 个字符串的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41267960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com