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] =='')'檢查將超出界限。 –