gpt4 book ai didi

c - isalpha() 无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:35 26 4
gpt4 key购买 nike

我正在尝试使用 for 循环逐个字符地遍历两个字符串,看看它们在哪里相等,在哪里不同,如果是的话,如果两个都是字母,那么我会做一个条件,但如果一个是字母和一个是下划线,然后我做别的事情。循环的第一部分工作正常;它可以判断两个值何时相等。但是,当我使用 isalpha 查看它们是否都是不同的字母时,它并没有这样做。

#include <stdio.h>
#include <string.h>
#include <ctype.h>
char s1[] = "v_intner_";
char s2[] = "wri_t_ers";


char* getTranscript(char* s1, char* s2){
int i;
char sOneTemp[9];
char sTwoTemp[9];
char eTranscript[9];
strcpy(sOneTemp, s1);
strcpy(sTwoTemp, s2);

for(i=0; i<9; i++){
if(sOneTemp[i]==sTwoTemp[i]){
printf("Those two characters are equal.\n");
}
if(sOneTemp[i]!=sTwoTemp[i]){


if(isalpha(sOneTemp[i]) && isalpha(sTwoTemp[i])){
printf("Both are letters\n");
}
else{
printf("One is a dash\n");
}
}
}
printf("The value of s1 is: %s\n", sOneTemp);

return s1;}
main()
{
printf("The main method returns: %s", getTranscript(s1,s2));
return 0;
}

最佳答案

您的isalpha 逻辑是正确的。但是你有一个缓冲区溢出:

char sOneTemp[9];
char sTwoTemp[9];

但是您随后使用 strcpy 复制 10 个字符(记住 C 字符串有一个空终止符)。如果您修复此错误,则代码会提供预期的输出。

一个好的解决方法是在您的函数中只使用 s1s2 而不是冗余地复制输入字符串。

关于c - isalpha() 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28802799/

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