鱼C论坛

 找回密码
 立即注册
查看: 1492|回复: 5

[已解决]c语言文件求助

[复制链接]
发表于 2023-8-16 19:45:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
四、编写程序
将china这五个字符,分别转换为hinac、inach、nachi、achin,并将已转换的字符串存入一个新文件text中(用c语言)
最佳答案
2023-8-16 19:45:24
你可以使用C语言的字符串操作函数来实现这个程序。下面是一个示例代码:
#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "china";
    char newStr[6];

    for (int i = 0; i < 5; i++) {
        strcpy(newStr, &str[ i]);
        strncat(newStr, str, i);
        FILE *file = fopen("text.txt", "a");
        fprintf(file, "%s\n", newStr);
        fclose(file);
    }

    return 0;
}

这个程序首先定义了一个字符串 str ,其中包含了要转换的字符序列"china"。然后,它使用一个循环来逐个转换字符并存储到新的字符串 newStr 中。在每次循环中,它使用 strcpy 函数将从当前位置开始的子字符串复制到 newStr 中,然后使用 strncat 函数将原始字符串的前缀添加到 newStr 的末尾。最后,它将 newStr 写入到一个名为"text.txt"的文件中。

请确保在运行程序之前,当前目录下存在名为"text.txt"的文件,或者根据需要修改文件路径。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-16 19:45:24 | 显示全部楼层    本楼为最佳答案   
你可以使用C语言的字符串操作函数来实现这个程序。下面是一个示例代码:
#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "china";
    char newStr[6];

    for (int i = 0; i < 5; i++) {
        strcpy(newStr, &str[ i]);
        strncat(newStr, str, i);
        FILE *file = fopen("text.txt", "a");
        fprintf(file, "%s\n", newStr);
        fclose(file);
    }

    return 0;
}

这个程序首先定义了一个字符串 str ,其中包含了要转换的字符序列"china"。然后,它使用一个循环来逐个转换字符并存储到新的字符串 newStr 中。在每次循环中,它使用 strcpy 函数将从当前位置开始的子字符串复制到 newStr 中,然后使用 strncat 函数将原始字符串的前缀添加到 newStr 的末尾。最后,它将 newStr 写入到一个名为"text.txt"的文件中。

请确保在运行程序之前,当前目录下存在名为"text.txt"的文件,或者根据需要修改文件路径。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 19:45:45 | 显示全部楼层
下面是将字符串 "china" 按照要求转换并存入新文件的 C 语言代码:
#include <stdio.h>#include <string.h>void rearrangeString(char* str, char* result) {    int len = strlen(str);    int i, j;    for (i = 1; i < len; i++) {        result[i-1] = str[i];    }    result[len-1] = str[0];    result[len] = '\0';}int main() {    char str[] = "china";    char result[6][6] = {0}; // 存放转换后的字符串    int i;    // 按要求转换字符串    for (i = 0; i < 5; i++) {        rearrangeString(str, result[i]);        strcpy(str, result[i]);    }    // 将转换后的字符串存入文件    FILE* file = fopen("text.txt", "w");    if (file == NULL) {        printf("无法打开文件。\n");        return 0;    }    for (i = 0; i < 5; i++) {        fprintf(file, "%s\n", result[i]);    }    fclose(file);    printf("已成功将转换后的字符串存入文件text.txt。\n");    return 0;}
这段代码使用一个辅助函数 rearrangeString() 来实现对字符串的转换,然后在主函数中按照要求进行循环转换并存入文件。最终结果存储在名为 "text.txt" 的文件中。

请注意,在使用此代码之前,请确保您的编译环境已配置正确并且具备文件写入权限。

如果你有任何其他问题,请随时告诉我。

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 19:45:47 | 显示全部楼层
以下是一个用C语言编写的程序,可以将字符串 "china" 转换为 "hinac"、"inach"、"nachi" 和 "achin",并将转换后的字符串存入一个新文件 "text" 中:
#include <stdio.h>

void rotateString(char* str)
{
    char temp = str[0];
    for (int i = 0; str[ i] != '\0'; i++)
    {
        str[ i] = str[i + 1];
    }
    str[strlen(str) - 1] = temp;
}

int main()
{
    char str[] = "china";
    FILE* file = fopen("text.txt", "w");
    
    for (int i = 0; i < strlen(str); i++)
    {
        fprintf(file, "%s\n", str);
        rotateString(str);
    }
    
    fclose(file);
    return 0;
}

在这个程序中,我们定义了一个 rotateString 函数,它接受一个字符串作为参数,将字符串中的每个字符向左移动一位,然后将最后一个字符移到字符串的开头。然后,我们在 main 函数中使用循环来依次调用 rotateString 函数,并将转换后的字符串写入文件 "text.txt" 中。

请确保程序文件与要写入的文件 "text.txt" 在同一目录下,并注意确保在编译和运行该程序之前已经创建了 "text.txt" 文件。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-4 23:20:34 | 显示全部楼层
isdkz 发表于 2023-8-16 19:45
你可以使用C语言的字符串操作函数来实现这个程序。下面是一个示例代码:

strncat(newStr, str, i);这一行代码什么意思啊大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-5 00:14:06 From FishC Mobile | 显示全部楼层
大佬那个for循环的第一句是不是当i是0时把china都复制到newstr中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-6 06:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表