【发布时间】:2022-01-21 00:56:53
【问题描述】:
使用 C,我正在尝试实现一个函数,该函数根据密钥 string_word 将 word 转换为 mutated_word。例如:当word 是"HE" 时,使用键"QWERTYUIOPASDFGHJKLZXCVBNM",mutated_word 应该变成"IT"。但它总是给出分段错误,不知道如何改进。
#include <cs50.h>
#include <stdio.h>
#include <string.h>
int main(void) {
string word = "HE" ;
string string_word = "QWERTYUIOPASDFGHJKLZXCVBNM";
char mutated_word[strlen(word)];
for (int i = 0; word[i] != '\0'; i++) {
string_word[(int)word[i] - 65] = mutated_word[i];
}
printf("%s", mutated_word);
}
【问题讨论】:
-
我猜你的意思是
mutated_word[i] = string_word[word[i]-65],但你还必须用\0字节终止mutated_word。 -
感谢您的回复。好的,谢谢!!
-
另请注意:
mutated_word的长度必须为strlen(word)+1才能适合终止的 \0 字节。