- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的程序对用户输入的字符串进行标记,并从这些标记中辨别它们是字符串还是整数(如果任何字母字符附加到数字,则意味着它与任何数字相邻 - 它是然后将其视为字符串)。
因此,以下输入:“this is 1string 123 1”应输出STR STR STR INT INT
。我所做的:获取输入字符串,继续对其进行标记/拆分(使用空格分隔符),然后迭代拆分标记(使用 for 循环)以查看拆分标记是否具有字母表中的任何字符(大写或小写)。
现在,最后一句话就是问题所在。我有一个名为foundChar 的 boolean 值。如果找到任何字母字符,那么我会将foundChar 设置为true。从那里,我会做一个简单的 if 检查来查看是否foundChar == true。但是,现在当我输入一个字符串时,它会打印空白?我不确定我在 C 中使用 boolean 值的方式是否正确,或者在哪里可以准确地指出这里出了什么问题。
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
// main
int main (void)
{
// declare our stuff for stuffs
char string[255];
char *tokenizedString;
const char delimiter[2] = " ";
char *pch;
bool found = false;
int truth = 0;
// prompt our user
do {
do {
printf (">");
fgets (string, 65, stdin);
} while (strlen (string) <= 0);
// remove it "\n" so it can terminate from newline input
pch = strstr (string, "\n");
strncpy (pch, "\0", 1);
// tokenize the input string
tokenizedString = strtok (string, delimiter);
while (tokenizedString != NULL) {
// check for any character in the token
// if found = true, then it's a string by our premade definition
for (int i = 0; i < strlen (tokenizedString); i++) {
if ((i >= 'a' && i <= 'z')
|| (i >= 'A' && i <= 'Z')) {
found = true;
}
}
// if we find a char in the string
if (found == true) {
printf ("STR ");
}
// if the token is a number
else if (isdigit (*tokenizedString))
printf ("INT ");
tokenizedString = strtok (NULL, delimiter);
// reset charFound to zero for our next token
found = false;
}
printf ("\n");
} while (!(strlen (string) == 0));
} // end of program
输出
./prog why are
_________(这里实际上没有打印任何内容,空白!应该打印STR STR
,下面的下一个字符串也是如此!)
./prog you not printing output for string
_________(这里也没有打印任何内容,应该打印 STR STR STR STR STR STR)
./prog 123
INT
./prog 1st
INT
./prog nor printing the right stuff
期望输出
./prog why are
STR STR
./prog you not printing output for string
STR STR STR STR STR STR
./prog 123
INT
./prog 1st
STR
./prog nor printing the right stuff
STR STR STR STR STR
最佳答案
由于 BLUEPIXY 已经正确指出(像往常一样)需要检查 tokenizedString
中的字符是数字还是字符,让我们退后一步,看看您在做什么大图景。虽然对每个读取的字符串进行标记,然后迭代每个标记中的每个字符并没有什么问题,但也没有必要这样做。
您真正关心的是行中的每个单词是否仅由数字组成(对于您的 INT
输出),否则您将其分类为 STR
。为此,您需要做的就是迭代输入中的每个字符,并计算该行中包含的空格之间的字符和数字的数量。您可以在不进行任何标记化的情况下执行此操作。只需计算您找到的每个空格之间(或 fgets 输入中包含的最后一个空格与 '\n'
之间的字符数和数字数)即可>).
例如,您可以执行以下操作:
#include <stdio.h>
#define MAXS 256
int main (void) {
char str[MAXS] = "";
while (fgets (str, MAXS, stdin)) { /* read each line */
char *p = str;
int ch = 0, dig = 0;
while (*p) { /* for each char */
if (*p == ' ' || *p == '\n') { /* if space or \n */
if (ch) /* if char found */
printf (" STR");
else if (dig) /* if digit found */
printf (" INT");
}
/* are we a char? */
if (('a' <= *p && *p <= 'z') || ('A' <= *p && *p <= 'Z'))
ch++; /* incriment ch */
else if ('0' <= *p && *p <= '9') /* are we a digit? */
dig++; /* incriment dig */
p++;
}
putchar ('\n');
}
return 0;
}
示例使用/输出
$ ./bin/str_or_int
why are
STR STR
you not printing output for string
STR STR STR STR STR STR
123
INT
1st
STR
nor printing the right stuff
STR STR STR STR STR
同样,标记化然后扫描每个标记并没有什么问题,但它可能比需要的更复杂一些。检查一遍,将 BLUEPIXY 建议的修复合并到您的代码中,然后比较版本。一般来说,如果有一种简单的方法来做某事,那么你遇到微妙错误的机会就会比你绕很远的路要小得多 :)
如果您对任一版本还有任何其他问题,请告诉我。
关于C:如何区分字符串和整数?输出可以很好地打印整数,但不能打印字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46375268/
有没有更好的方法用 PHP 将数据输出到 html 页面? 如果我想在 php 中用一些 var 制作一个 div,我会写类似的东西 print (''.$var.''); 或 echo "''.$v
我可以使用 java awt print 来打印文档/文件而不是使用 javax print 吗?我发现在 java awt print 中有一个选项可以使用 AttributedString 将内容
目前我通过以下方式运行 R 脚本: R --slave argument1 argument2 ... 我想知道 R 中关于如何退出脚本并发出警告的最佳实践,q() 会这样做吗? if(!file.
谁能告诉我如何编写一个程序,用 gcc 编译时打印 c ,用 g++ 编译时打印 c++? 最佳答案 #ifdef __cplusplus printf("c++\n"); #else
我需要支持在 KitKat 设备上打印,但我的目标 SDK 是 13(无法更改)。 特别是我需要打印一个 webview。 这是用于打印 webview 的 API: http://developer
我正在尝试创建一个简单的函数,其中 python 将根据您的年份输入计算年龄。我已经尝试了几种方法,但我没有运气 atm。 附:对不起,我是新手。 ame = input(" Enter your n
JavaFX 2.0 是否支持打印?我有一个文本区域,我从中获取文本然后我想打印它,但似乎没有这个功能。 当然,这里我说的是打印到打印机。 :) 最佳答案 尚不支持。作为一种解决方法,您可以使用 Ja
我试图找出printOn的重点。我查看了一些实现它的类,看起来它只是帮助打印不同数据类型的单位。这是准确的吗? 如果是这样,有人能指出我如何为我自己的类(class)实现这一点的正确方向吗?我将在可能
我无法让 IE 打印我的 Canvas (使用 excanvas 生成)...我使用的是最新版本的 excanvas。 http://dl.dropbox.com/u/997831/canvas.ht
我搜索了很多但没有人回答我的问题,我读到在这样的信号处理程序中使用 cout 是不安全的: void ctrlZHandler(int sig_num) { //SIGTSTP-18
我有兴趣打印一系列查询。我有以下代码。 start = datetime.datetime(2012, 2, 2, 6, 35, 6, 764) end = datetime.datetime(201
public class javaClass { public static void main(String [] arg) { String row1 = "A____A"
我需要写入前一行的命令,例如不带\n 的 print()。 下面是一些示例代码: a=0 print("Random string value") if a==0: print_to_prev
我有一个使用 UIKit 和 Objective C 的旧 iOS 应用程序,我目前正在将其移植到 SwiftUI 和 Swift。一切都很顺利,我喜欢 Swift 和 SwiftUI。该应用程序已经
我创建了一个求和函数,它接受一个开始编号和一个结束编号,并返回这两点之间的总和答案 def print_sum_equations(start_number,end_number):
在 Perl 6 中,print 和有什么区别? , put和 say ? 我怎么看 print 5不同,但 put 5和 say 5看起来一样。 最佳答案 put $a就像 print $a.Str
我正在使用 here 中的 getOrgChart 库,我正在尝试打印整个图表,而不仅仅是可见部分。不幸的是,当使用标准库打印功能时,它只会打印出第一部分,而我不知道如何打印整个图表(该图表相当宽,大
我制作了一个非常适合 A4 页面的 View 。现在我想打印它。请注意,我没有使用drawRect或类似的东西,只是一个带有 subview 和文本标签的普通 View 。我的问题是,我对该 View
由于 Cocoa-Java 已弃用,我正在将 Cocoa-Java 代码迁移到 Cocoa + JNI。该代码打印存储在文件中的图像。新的 Cocoa 代码基本上是: NSImage *image =
这个问题已经有答案了: Printing a TDBGrid (4 个回答) 已关闭 6 年前。 如何在不安装或下载组件的情况下打印 DBGrid? 或者 如何将 DBGrid 的数据放入 RichE
我是一名优秀的程序员,十分优秀!