| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1142 人关注过本帖
标题:这段程序有问题吗?
只看楼主 加入收藏
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
这段程序有问题吗?
怎么运行出现乱码,vs2015
#include <stdio.h>
#include <stdlib.h>
void main()
{
    char s[100], t;
    int i;
    printf("请输入字符串:");
        scanf_s("%s", s);
        printf("请输入要插入的字符:");
        scanf_s("%c", &t);
        printf("请输入插入的位置:");
        scanf_s("%d", &i);
        /*insert(s, t, i);*/
        printf("新的字符串为:%s", s);
    system("pause");
}
运行出现乱码
搜索更多相关主题的帖子: include system insert 字符串 
2016-07-06 15:33
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
scanf_s需要输入长度参数。
程序代码:
#include <stdio.h>
#include <stdlib.h>
void main()
{
    char s[100], t;
    int i;
    printf("请输入字符串:");
    scanf_s("%s", s,100);
    getchar();
    printf("请输入要插入的字符:");
    scanf_s("%c", &t, 1);
    getchar();
    printf("请输入插入的位置:");
    scanf_s("%d", &i);
    /*insert(s, t, i);*/
    printf("新的字符串为:%s", s);
    system("pause");
}
2016-07-06 15:40
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
为什么后面要加个getchar()?
2016-07-06 16:07
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
这个程序在gcc下运行出错!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void insert(char s[],char t,int i)
{
    char string[100];
    if (!strlen(s))
        string[0] = t;
    else
        strncpy(string, s, i);
    string[i] = t;
    string[i + 1] = '\0';
    strcat(string, s + i);
    strcpy(s, string);
}
void main()
{
    char s[100], t;
    int i;
    printf("请输入字符串:");
        scanf("%s", s);
        printf("请输入要插入的字符:");
        scanf("%c", &t);
        printf("请输入插入的位置:");
        scanf("%d", &i);
        insert(s, t, i);
        printf("新的字符串为:%s", s);
    system("pause");
}

2016-07-06 16:15
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
不加getchar的话,下一次输入scanf("%c", &t);,t得到的是回车键。
2016-07-06 16:18
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:10 
回复 4楼 ehszt
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void insert(char s[],char t,int i)
{
    char string[100];
    if (!strlen(s))
        string[0] = t;
    else
        strncpy(string, s, i);
    string[i] = t;
    string[i + 1] = '\0';
    strcat(string, s + i);
    strcpy(s, string);
}
int main()
{
    char s[100], t;
    int i;
    printf("请输入字符串:");
    scanf("%s", s);
    getchar();        //获取回车
    printf("请输入要插入的字符:");
    scanf("%c", &t);
    getchar();        //获取回车
    printf("请输入插入的位置:");
    scanf("%d", &i);
    getchar();        //获取回车
    insert(s, t, i);
    printf("新的字符串为:%s", s);
    return 0;
}


[此贴子已经被作者于2016-7-6 16:25编辑过]

2016-07-06 16:24
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
vs2015中也不能正确执行,插入的变成了乱码!
void insert(char s[],char t,int i)
{
    char string[100];
    if (!strlen(s))
        string[0] = t;
    else
        strncpy_s(string, s, i);
    string[i] = t;
    string[i + 1] = '\0';
    strcat_s(string, s + i);
    strcpy_s(s,strlen(string)+1, string);
}
void main()
{
    char s[100], t;
    int i;
    printf("请输入字符串:");
        scanf_s("%s", s,100);
        getchar();
        printf("请输入要插入的字符:");
        scanf_s("%c", &t);
        getchar();
        printf("请输入插入的位置:");
        scanf_s("%d", &i);
        insert(s, t, i);
        printf("新的字符串为:%s", s);
    system("pause");
}
2016-07-06 16:28
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
把编译问题解决就行

程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void insert(char s[], char t, int i)
{
    char string[100];
    if (!strlen(s))
        string[0] = t;
    else
        strncpy_s(string,100, s, i);
    string[i] = t;
    string[i + 1] = '\0';
    strcat_s(string, 100, s + i);
    strcpy_s(s, strlen(string) + 1, string);
}
void main()
{
    char s[100], t;
    int i;
    printf("请输入字符串:");
    scanf_s("%s", s, 100);
    getchar();
    printf("请输入要插入的字符:");
    scanf_s("%c", &t, 1);
    getchar();
    printf("请输入插入的位置:");
    scanf_s("%d", &i);
    insert(s, t, i);
    printf("新的字符串为:%s", s);
    system("pause");
}
2016-07-06 16:34
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
或者这样
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//清空缓存函数
void safe_flush(FILE *fp)
{
    int ch;
    while( (ch = fgetc(fp)) != EOF && ch != '\n' );          
}
void insert(char s[],char t,int i)
{
    char string[100];
    if (!strlen(s))
        string[0] = t;
    else
        strncpy(string, s, i);
    string[i] = t;
    string[i + 1] = '\0';
    strcat(string, s + i);
    strcpy(s, string);
}
int main()
{
    char s[100], t;
    int i;
    printf("请输入字符串:");
    //gets()可以使字符串中包含空格,scanf不能读取空格,会按结束处理 
    gets(s);   
    printf("请输入要插入的字符:");
    t=getchar();
    //只有输入的第一个要插入的字符有效,后面均清除掉
    safe_flush(stdin);   
    printf("请输入插入的位置:");
    scanf("%d", &i);
    insert(s, t, i);
    printf("新的字符串为:%s", s);
//    system("pause");
}
2016-07-06 16:34
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
知道了,scanf_s("%c", &t,1);这个后面加个1就好了,谢谢!
2016-07-06 16:40
快速回复:这段程序有问题吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048018 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved