也许是一件微不足道的事情,但我刚刚学习 C,我讨厌用两行代码来做,用一行代码可以做什么(当然,只要它不混淆代码)。
无论如何,我通过一次附加一个字符来构建字符串。我通过跟踪正在构建的字符串的字符索引以及输入文件字符串的(行)索引来做到这一点。
str[strIndex] = inStr[index];
str[strIndex + 1] = '\0';
Run Code Online (Sandbox Code Playgroud)
str 用于临时存储输入行中的单词之一。每次添加字符时我都需要附加终止符。
我猜我想知道什么;有没有一种方法可以将这些组合在一个语句中,而不使用 strcat() (或每次开始一个新单词时使用 memset() 清除 str)或创建其他变量?
对 C 完全陌生。只是想通过运行 John Bentley 的 Anagram(我相信是第 2 列)程序来掌握 Linux 和 C 编程的窍门。很确定我逐字复制了这段代码(必须添加标头等),但我收到一条警告,当使用我的 squash.c 程序编译和运行时,会给出不需要的输出。承认吧,我什至不知道这个 charcomp 函数的行为方式,或者它的作用。(那里的一些启发也很好)。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int charcomp(char *x, char *y) {return *x - *y;}
#define WORD_MAX 100
int main(void)
{
char word[WORD_MAX], sig[WORD_MAX];
while (scanf("%s", word) != EOF) {
strcpy(sig, word);
qsort(sig, strlen(sig), sizeof(char), charcomp);
printf("%s %s\n", sig, word);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是警告。
sign.c:13:41: warning: incompatible pointer types passing 'int (char *, char *)'
to parameter of type '__compar_fn_t' (aka 'int …Run Code Online (Sandbox Code Playgroud)