C 字符串数组顺序操作

标签 c arrays

我正在做 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/

相关文章:

java - java中的多维数据结构

Javascript 从对象表调用函数

c - 将 float 组传递给 (void*) 函数参数

c - OpenGL(在 Ubuntu 中): glGetError() returns GL_INVALID_OPERATION

c++ - 如何使用 Microsoft Visual C++ 编写代码调用 JNI

php - 通知: unserialize(): Error at offset | data trimmed in MySQL

mysql - 按同一行中的日期值对值进行排序

无法将我的一维数组传递给 C 中的函数

配置 CLion 以处理 gtk_builder 信号

c++ - C/C++ - 有符号字符比较