我正在做 C 类(class)的练习,但遇到了段错误。这段代码应该改变数组的顺序。比如,输入:ad b c daa,输出:daa c b ad。它随空间而变化。所以我使用 strtok 将其变成 token 并使用 for 循环来更改顺序,但出现错误。我的问题是什么是段错误:11,为什么我会得到一个?
#include <stdio.h>
#include <string.h>
void changeorder(int SIZE, char string[], char changed_string[]);
int main() {
const int SIZE = 10;
char string[SIZE];
char changed_string[SIZE];
printf("Enter string: ");
fgets(string, sizeof(string), stdin);
strtok(string, " ");
size_t len = strlen(string);
if(string[len-1] == '\n') {
string[len-1] = '\0';
}
changeorder(SIZE, string, changed_string);
}
void changeorder(int SIZE, char string[], char changed_string[]) {
int i;
int j;
for(i=SIZE; i>0; i--) {
for(j=0; j<SIZE; j--) {
string[i] = changed_string[j];
}
}
}
最佳答案
#include <stdio.h>
#include <string.h>
void changeorder(size_t len, char string[], char changed_string[]);
int main(void) {
const int SIZE = 16;
char string[SIZE];
char changed_string[SIZE];
printf("Enter string : ");
fgets(string, sizeof(string), stdin);
strtok(string, "\n");
size_t len = strlen(string);
changeorder(len, string, changed_string);
printf("'%s'\n", changed_string);
return 0;
}
void changeorder(size_t len, char string[], char changed_string[]) {
char temp[len];
int i=0, k=0;
while(len--){
if(string[len] != ' ')
temp[k++] = string[len];
if(string[len] == ' ' || !len){
while(k)
changed_string[i++] = temp[--k];
if(string[len] == ' ')
changed_string[i++] = ' ';
}
}
changed_string[i] = 0;
}
关于C 字符串数组顺序操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26825355/