我正在寫一個函數來擴展字符串str1並將其存儲爲str2。通過擴展,我的意思是如果str1具有「a-d」,它應該作爲「abcd」存儲在str2中。我寫了下面的代碼。我得到一個調試錯誤,堆棧變量str1被損壞。 有人可以指出哪裏出了問題? 謝謝。C - 擴展字符串的內容
#include <stdio.h>
void expand(char s1[], char s2[]);
int main() {
char s1[] = "Talha-z";
char s2[] = "";
expand(s1, s2);
printf(s2);
}
void expand(char s1[], char s2[]) {
int i = 0;
int j= 0;
int k, c_next;
while (s1[i] != '\0') {
switch (s1[i]) {
case ('-') :
c_next = s1[i+1];
for (k = 1; k < c_next; k++) {
s2[j] = s1[i] + k;
j++;
}
break;
}
i++;
j++;
}
s2[j] = '\0';
}
通過「展開」,你寫的超出了原始字符串的末尾。你必須使用動態內存分配和realloc()。 – 2012-03-18 17:41:41
這可能值得解釋任何其他要求。 「Yalha-z」應該生產什麼?當str1不包含' - '時應該發生什麼?如果以' - '開始或結束會發生什麼? – gbulmer 2012-03-18 19:08:12