allomany.txtから長いテキスト ドキュメントを読み取るこの小さなプログラムがあります 。これには、いくつかの数字がある長いテキストが含まれています。次に、すべての数字を改ざんする必要があります。プログラムがファイルからテキストを読み取る必要があると仮定しましょう。数字を見つける(数字は文字列です)次に、文字列が数字かどうかを確認する必要があります。はいの場合、ビット演算を使用して改ざんする必要があります。
改竄: string(atoi
,sscanf
) で数値を見つけた場合、文字列で見つかった数値をインクリメントする必要があります。例: プログラムが 14 を見つけた場合、ビット演算を使用して 15 に増やします。私の記憶が正しければ、ネットでこの例を見つけました:(-(~n))
. ビット単位の操作を使用しない場合は機能します。
質問: ビット演算でこれを行う方法は?
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fin,*fout;
char *token, s[1000];
fin = fopen("allomany.txt","rt");
fout = fopen("hamisitott.txt","wt");
while (fscanf(fin, "%[^\n]\n", s) != EOF) {
token = strtok(s, " ");
while (token != NULL) {
if (atof(token) > 0)
fprintf(fout, "%g ", atof(token) + 1);
else fprintf(fout, "%s ", token);
token = strtok(NULL, " ");
}
fprintf(fout, "\n");
}
fclose(fin);
fclose(fout);
return EXIT_SUCCESS;
}