0
我对c编程非常陌生,对于学校作业,我需要编写一个程序以字符串作为输入并将字母“ay”添加到每个词都以这个单词前面的辅音开头。据暗示,这应该用strncpy和strcat来完成。将字符串添加到特定位置的字符数组在c编程中给出缓冲区溢出
这是我写的代码:
#include <stdio.h>
#include <string.h>
int main()
{
char myString[50];
char abc[26] = "bcdfghjklmnpqrstvwxyz";
char strA[50];
char strB[50];
char strC[150];
char ay[3] = "ay";
printf("** Welcome to the Double Dutch game **\nPlease enter a string: ");
scanf(" %[^\n]s", &myString);
int i, j;
for (i=0; myString[i]!='0'; i++) {
for(j=0; abc[j]!='\0'; j++) {
if(abc[j] == myString[i]){
if(myString[i-1] == ' '){
strncpy(strC, &myString[0], i);
strncpy(strB, &myString[i], 40);
strcat(strC, ay);
strcat(strC, strB);
myString[0] = '\0';
strcat(myString, strC);
strC[0] = '\0';
strB[0] = '\0';
}
}
}
}
printf("Result: %s", myString);
}
当我运行这段代码它一直给错误*缓冲区过低检测*:/home/a.out终止。我找不到我犯的错误。希望有人能帮助我。 感谢
变化'炭ABC [26] = “bcdfghjklmnpqrstvwxyz”;'到'炭ABC [ ] =“bcdfghjklmnpqrstvwxyz”;' - 让编译器做腿部工作 –
'scanf(“%[^ \ n] s”,&myString);' - >删除'&' –
如果第一个字符字符串是辅音? 'i'将为0,并且这个'if(myString [i-1] =='')'检查将超出界限。 –