久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1055|回復: 2
打印 上一主題 下一主題
收起左側

C語言程序缺陷 用戶輸入一段字符串,和一個數字n,提取其中的前n個單詞,望大佬指點

[復制鏈接]
回帖獎勵 10 黑幣 回復本帖可獲得 10 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
ID:879924 發表于 2021-12-27 18:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
自學C語言遇到的問題,
兩個問題:
1.現在比如輸入a a a然后輸入3,只能打印2個a,但是如果輸入a a a 然后輸入3,就可以打印3個a。我覺得原因是因為j在遇到' '或'\t'才會自增,但如果超過MAXSIZE或者遇到最后一個單詞,后面就沒有' '或'\t'了,所以就不自增,造成少1個輸出,是這個原因嗎?需要如何修復這個bug呢?
2.在本例中,關于2維字符數組的傳參問題,如何使用指針的形式傳遞呢?形參和實參分別需要如何寫?
謝謝

C語言源程序如下:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MAXSIZE 21

int total_count=0;
int fgetsnword(char word_arr[][MAXSIZE],char input_string[],int n);
int main(void)
{
        int n;        char* chr;
        extern int total_count;
        char input_string[MAXSIZE];        char word_arr[MAXSIZE][MAXSIZE];
        while(1)
        {
                printf("請輸入一行字符串,單詞間用空格分開,最多%d位!\n",MAXSIZE-1);
                fgets(input_string,MAXSIZE,stdin);
                if(chr=strchr(input_string,'\n'))
                        *chr='\0';
                else
                        while(getchar()!='\n');        
               
                printf("您輸入的字符串是\n%s\n",input_string);

                printf("請輸入你想提取的單詞個數!\n");

                while(scanf("%d",&n)!=1)
                {
                        printf("輸入錯誤,請重新輸入:\n");
                        getchar();
                }        
                total_count=fgetsnword(word_arr,input_string,n);        
                printf("提取出每一個單詞如下:\n");
                for(int i=0;i<total_count;i++)
                {
                        puts(word_arr[ i]);
                }

                while(getchar()!='\n');        
        }
        return 0;
}


int fgetsnword(char word_arr[][MAXSIZE],char input_string[],int n)
{
        extern int total_count;
        int i=0,j=0,k=0;
        int flag=1;
        while((j<n)&&(i<strlen(input_string))&&(i<MAXSIZE))
        {
                if((input_string[ i]==' '||input_string[ i]=='\t')&&(flag==1))
                {
                        i++;
                        continue;
                }
                if(input_string[ i]==' '||input_string[ i]=='\t')
                {
                        while(input_string[ i]==' '||input_string[ i]=='\t')
                                i++;
                        word_arr[j][k] = '\0';
                        j++;
                        k=0;
                }
               
               
                word_arr[j][k] = input_string[ i];
               
                i++;
                k++;
                flag=0;
        }
        word_arr[j][k] = '\0';
        total_count=j;        //后面不加空格的話,少一個輸出        
        return total_count;
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:276663 發表于 2021-12-27 21:52 | 只看該作者
printf("%.5s",s);
回復

使用道具 舉報

板凳
ID:301191 發表于 2021-12-29 02:33 | 只看該作者
頂一下
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 美女福利视频网站 | 99re在线视频观看 | 99精品免费在线观看 | 久久美女网 | 天天射色综合 | 亚洲男人的天堂网站 | 亚洲午夜av久久乱码 | 亚洲+变态+欧美+另类+精品 | 中文字幕 国产 | 日本免费一区二区三区四区 | 日韩福利片 | 91美女视频 | 老外黄色一级片 | 免费看淫片 | 免费看爱爱视频 | 欧美日韩国产一区二区三区不卡 | 久久久资源 | 国产日韩欧美在线 | 亚洲精品一区二区久 | 日韩精品久久一区二区三区 | 欧美日韩国产中文 | 成人伊人| 久久久久精 | 日韩精品在线一区 | 日本一二区视频 | 成人影院在线观看 | 亚洲午夜视频 | 久久久久久黄 | 中文字幕成人在线 | 91综合网 | av性色全交蜜桃成熟时 | 成人免费观看男女羞羞视频 | 欧美性猛交一区二区三区精品 | 91欧美精品成人综合在线观看 | 亚洲精品乱码久久久久久久久久 | 欧美午夜精品 | 在线免费观看黄色 | 九九色综合 | 激情欧美一区二区三区中文字幕 | 2019天天干夜夜操 | 天堂一区二区三区 |