Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Printf()按顺序打印字符串参数

Printf()按顺序打印字符串参数
EN

Stack Overflow用户
提问于 2015-10-16 12:17:32
回答 1查看 560关注 0票数 0

我有一些C代码,它逐行读取文本文件,在每一行中散列字符串,并使用最大的哈希值保存字符串的运行计数。

这似乎是在做正确的事情,但当我发布打印声明时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 printf("Found Bigger Hash:%s\tSize:%d\n", textFile.biggestHash, textFile.maxASCIIHash);    

我的打印在输出中返回如下内容:

预处理: dict1

发现BiSize:110小时:a

发现BiSize:857小时:aardvark

发现BiSize:861h:大灰狼

发现BiSize:937h:废弃

发现BiSize:951h:弃尸

发现BiSize:1172:遗弃

发现BiSize:1283:缩写

发现BiSize:1364:非生物发生

发现BiSize:1593:非生物发生

发现BiSize:1716:心不在焉

发现BiSize:1726:棘皮动物

发现BiSize:1826:住宿

发现BiSize:1932年:腺癌

发现BiSize:2162:肾上腺皮质激素

发现BiSize:2173:化学自养

发现BiSize:2224:反革命

发现BiSize:2228:反革命分子

发现BiSize:2258:树状年代学

发现BiSize:2440:脑电图

发现BiSize:4893:pneumonoultramicroscopicsilicovolcanoconiosis

最大尺寸:46umonoult--总字数:71885

所以看起来我误用了printf()。以下是代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define WORD_LENGTH 100 // Max number of characters per word

// data1 struct carries information about the dictionary file; preprocess() initializes it
struct data1
{
   int numRows; 
   int maxWordSize; 
   char* biggestWord;
   int maxASCIIHash; 
   char* biggestHash;  
}; 

int asciiHash(char* wordToHash); 
struct data1 preprocess(char* fileName); 


int main(int argc, char* argv[]){

   //Diagnostics Purposes; Not used for algorithm  
   printf("Preprocessing: %s\n",argv[1]); 
   struct data1 file = preprocess(argv[1]); 
   printf("Biggest Word:%s\t Size:%d\tTotal Words:%d\n", file.biggestWord, file.maxWordSize, file.numRows);  
   //printf("Biggest hashed word (by ASCII sum):%s\tSize: %d\n", file.biggestHash, file.maxASCIIHash);  
   //printf("**%s**", file.biggestHash); 
   return 0; 
}

int asciiHash(char* word)
{
   int runningSum = 0; 
   int i;
   for(i=0; i<strlen(word); i++)
   {
      runningSum += *(word+i); 
   }
   return runningSum; 
}

struct data1 preprocess(char* fName)
{
   static struct data1 textFile = {.numRows = 0, .maxWordSize = 0, .maxASCIIHash = 0};
   textFile.biggestWord = (char*) malloc(WORD_LENGTH*sizeof(char));    
   textFile.biggestHash = (char*) malloc(WORD_LENGTH*sizeof(char));  
   char* str = (char*) malloc(WORD_LENGTH*sizeof(char)); 

   FILE* fp = fopen(fName, "r"); 
   while( strtok(fgets(str, WORD_LENGTH, fp), "\n") != NULL)
   {
      // If found a larger hash
      int hashed = asciiHash(str);
      if(hashed > textFile.maxASCIIHash)
      { 
         textFile.maxASCIIHash = hashed;  // Update max hash size found
         strcpy(textFile.biggestHash, str); // Update biggest hash string
         printf("Found Bigger Hash:%s\tSize:%d\n", textFile.biggestHash, textFile.maxASCIIHash);   
      }
      // If found a larger word
      if( strlen(str) > textFile.maxWordSize)
      {
         textFile.maxWordSize = strlen(str); // Update biggest word size
         strcpy(textFile.biggestWord, str); // Update biggest word 
      }
      textFile.numRows++; 
   }

   fclose(fp); 
   free(str); 
   return textFile; 
}
EN

回答 1

Stack Overflow用户

发布于 2015-10-16 12:39:27

你的陈述

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
while( strtok(fgets(str, WORD_LENGTH, fp), "\n") != NULL)

不考虑来自fgets()的返回值或strtok()的工作方式。

这样做的方法就像

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char *fptr, *sptr;
while ((fptr = fgets(str, WORD_LENGTH, fp)) != NULL) {
    sptr = strtok(fptr, "\n");
    while (sptr != NULL) {
        printf ("%s,", sptr);
        sptr = strtok (NULL, "\n");
    }
    printf("\n");
}

注在第一次调用strtok()之后,对同一序列的后续调用必须传递参数NULL

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33178883

复制
相关文章
学会Excel:[4]日期格式、文本格式快速转换
Excel表中日期格式其实是数值,有时候需要原样转成文本,有时候也要将文本转成日期。
用户1191760
2019/02/27
1.5K0
前端传递日期格式问题
遇到前端传递日期格式问题,我这边用@RequestBody接受前端传递的日期格式为:yyyy-MM-dd
Java king
2023/02/21
9300
Flutter中的日期格式转换
1. Flutter中的日期转换 // 初始化当前日期 DateTime _nowDate = DateTime.now(); // 获取当前时间 print(_nowDate); // 2021-01-01 18:18:37.522021 // 获取当前时间戳 print(_nowDate.millisecondsSinceEpoch); // 1609496743946 // 将时间戳转为格式化的时间 print(DateTime.fromMillisecondsSinceEpoch(160949
越陌度阡
2021/01/05
5.9K0
记录修改Typecho日期格式的问题
我们在制作Typecho主题的时候,默认官方提供的日期格式是类似July 8, 2020,这样子的,我们可能需要其他的格式,比如2020-08-08。所以我们只需要找到对应模板中的日期格式就可以。这里简单记录一下,如果以后有需要的话可以使用到。
老蒋
2021/12/24
2K0
MariaDB 日期类型格式的长度问题
在我们对 MariaDB 日期类型进行字段设置的时候,通常我们可能没有考虑后面的长度问题。
HoneyMoose
2021/12/21
1.6K0
GO语言程序中解决中文日期格式的解析问题
最近做一个使用gin框架的GO语言项目,需要将前端传递过来的中文日期格式的字符串转换成GO语言的时间类型,遇到了`parsing time xx as xx: cannot parse xx as xx` 这样的错误,原来这是GO语言特殊的时间格式引起的,它默认不是使用系统的时间格式,使用的时候需要进行转换。下面做一个笔记记录解决方法。
用户1177503
2021/11/30
2.3K0
GridControl控件的日期格式化问题
今天再用gridcontrol控件显示日期的时候,发现只显示年月日,不显示时分秒。
别团等shy哥发育
2023/02/25
1.4K0
GridControl控件的日期格式化问题
laravel 中字段格式处理
这里举一个简单的示例,在laravel 中,我们应当这样做: 在对应的Order 模型里定义
句小芒
2022/12/29
5040
txt文本格式怎么转换成excel_文本格式转换为日期
注:当行数大于65535时,就需要使用Excel 2007 一个工作表行数限制1048576,列数限制16384
全栈程序员站长
2022/09/20
2.1K0
Flutter中的日期、格式化日期、日期选择器组件在
所谓时间戳,是指自格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
拉维
2019/08/29
26.1K0
Flutter中的日期、格式化日期、日期选择器组件在
Python中获取当前日期的格式
在Python里如何获取当前的日期和时间呢?在Python语言里,我们可以通过调用什么模块或者类函数来得到当前的时间或日期呢?
全栈程序员站长
2022/07/11
4.4K0
Python中获取当前日期的格式
在Python里如何获取当前的日期和时间呢?在Python语言里,我们可以通过调用什么模块或者类函数来得到当前的时间或日期呢? 当然你可以使用时间模块(time module),该模块提供了各种和时间相关的函数。但是这个模块里的一些函数在某些平台里不可用。那么怎么办呢?我们 可以使用一个更高级的面向对象的接口函数:datetime。它提供了操作日期和时间的多种简单或复杂的方法。 python里使用time模块来获取当前的时间 1 2 3 time.strftime(format)
用户1217611
2018/01/30
4.5K0
4种解决json日期格式问题的办法
开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后将得到一个很长的数字表示日期数据,如下所示:
张果
2022/05/09
2.2K0
4种解决json日期格式问题的办法
Layui解决table日期的格式化问题
当然可以选择在后端格式化后再传回前端,显然我们不推荐你这样做,因为你很难确定,你格式化后的日期格式在所有地方都适用
许喜朝
2020/08/11
3.5K0
Layui解决table日期的格式化问题
如何在 React 中实现鼠标悬停显示文本?
在 React 应用中,当用户将鼠标悬停在某个元素上时,我们经常需要显示一些相关的文本,以提供额外的信息或交互提示。本文将详细介绍如何在 React 中实现鼠标悬停显示文本的功能,并提供示例代码帮助你理解和应用这个功能。
网络技术联盟站
2023/06/07
3.4K0
mysql日期格式转换_MySQL日期格式转换
DATE_FORMAT(date,format):根据参数对date进行格式化。1
全栈程序员站长
2022/07/02
11.6K0
Excel自定义格式日期计算问题
=DATEDIF(TEXT(A1,"#-00-00"),TEXT(B1,"#-00-00"),“Y”)
李玺
2021/11/22
1.2K0
Excel自定义格式日期计算问题
mysql日期格式化 yyyymmdd_mysql中时间日期格式化
这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:
全栈程序员站长
2022/09/02
5.3K0
日期格式化时注解@DateTimeFormat无效的问题分析
本文分三步走,如下所示,其中会穿插着介绍@DateTimeFormat、@RequestBody、@JsonFormat注解
汤圆学Java
2021/05/15
6.4K0
由于查询语句中日期的格式引起的问题
我这边有一个系统,在一个环境下运行完全正常,但迁到另外一个环境后,其中一个查询功能就莫名其妙的出现了问题,我通过检查,发现有一个很复杂的查询语句,在一个数据库环境下查询完全正常,在另外一个环境下查询就出问题了,报的错误是字符串的格式不对。
源哥
2018/08/28
8890

相似问题

文本字段中的日期格式

31

混合日期字段(日期和文本)格式

22

实际上:如何格式化数字yaxis和悬停文本?

13

实际上:悬停信息中的不可读文本

21

更改文本字段中存储的日期格式

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文